/* Ċ Ġ* ĠG le ip n ir ĠAttack ĠPO C Ġ- ĠExplo iting Ġthe ĠAndroid Ġprocess Ġshare Ġfeature Ċ Ġ* ĠCopyright Ġ( C ) Ġ< 2 0 2 0 > Ġ Ġ< S as cha ĠR oth > Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġfree Ġsoftware ; Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* Ġthe ĠFree ĠSoftware ĠFoundation ; Ġeither Ġversion Ġ 2 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġalong Ċ Ġ* Ġwith Ġthis Ġprogram ; Ġif Ġnot , Ġwrite Ġto Ġthe ĠFree ĠSoftware ĠFoundation , ĠInc ., Ċ Ġ* Ġ 5 1 ĠFranklin ĠStreet , ĠFifth ĠFloor , ĠBoston , ĠMA Ġ 0 2 1 1 0 - 1 3 0 1 ĠUSA . Ċ Ġ*/ Ċ Ċ package Ġorg . gle ip n ir . app . helpers Ċ Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Context Wrapper Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . content . pm .* Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . content . res . Xml Resource Parser Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . User Handle Ċ import Ġorg . gle ip n ir . app . extend able Loader . log Ċ import Ġorg . gle ip n ir . app . reflection Helper . set Reflect ive Ċ Ċ /** Ċ Ġ* ĠWe Ġreplace Ġthe Ġoriginal Ġpackage Ġmanager Ġto Ġcontrol Ġthe Ġdata Ġthe Ġv ictim ĠApp Ġwill Ġget . Ċ Ġ* Ċ Ġ* ĠWe Ġhave Ġto Ġcare Ġabout Ġget Identifier (...) Ġcalls Ġregarding Ġthe Ġpackage Ġname . Ċ Ġ* Ċ Ġ* ĠAlso Ġsome Ġget [ Component ] Info Ġcalls Ġmust Ġbe Ġhook ed Ġin Ġorder Ġto Ġreturn Ġthe Ġv ictim Ġinfo Ġobjects . Ċ Ġ* ĠThe ĠPackage Manager Service Ġwould Ġthrow Ġan Ġexception Ġbecause Ġthese Ġcomponents Ġare Ġnot Ġin Ġthe ĠG le ip n ir Ċ Ġ* ĠAndroid Manifest . Ċ Ġ*/ Ċ class ĠPackage Manager Helper ( ĊĠĠĠ Ġval Ġoriginal PackageManager : ĠPackage Manager , ĊĠĠĠ Ġval Ġtarget Package Info : ĠPackage Info Ċ ) Ġ: ĠPackage Manager () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġinject ( context : ĠContext Wrapper , Ġtarget Package Info : ĠPackage Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[- ] Ġinject ĠPackage Manager Helper Ġinto Ġ$ context ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠContext Wrapper ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Reflect ive ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . base Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" m PackageManager ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager Helper ( context . package Manager , Ġtarget Package Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġcan Ġfail ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[- ] Ġfailed Ġto Ġinject : Ġ$ exception ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Launch Intent For Package ( p 0 : ĠString ): ĠIntent ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Launch Intent For Package ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Resources For Application ( p 0 : ĠApplication Info ): ĠResources Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getResources For Application ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Resources For Application ( p 0 : ĠString ): ĠResources Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getResources For Application ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Receiver Info ( p 0 : ĠComponent Name , Ġp 1 : ĠInt ): ĠActivity Info Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (" get Receiver Info ") ĊĊĠĠĠĠĠĠĠ Ġtarget Package Info . re ceiv ers ?. find Ġ{ Ġp 0 . className Ġ== Ġit . name Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ get Receiver Info Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Receiver Info ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Intent Activity Options ( ĊĠĠĠĠĠĠĠ Ġp 0 : ĠComponent Name ?, ĊĠĠĠĠĠĠĠ Ġp 1 : ĠArray < out ĠIntent > ?, ĊĠĠĠĠĠĠĠ Ġp 2 : ĠIntent , ĊĠĠĠĠĠĠĠ Ġp 3 : ĠInt ĊĠĠĠ Ġ): ĠMutable List < Resolve Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . query Intent Activity Options ( p 0 , Ġp 1 , Ġp 2 , Ġp 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Application Icon ( p 0 : ĠApplication Info ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getApplication Icon ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Application Icon ( p 0 : ĠString ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getApplication Icon ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġextend Verification Timeout ( p 0 : ĠInt , Ġp 1 : ĠInt , Ġp 2 : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . extend Verification Timeout ( p 0 , Ġp 1 , Ġp 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Application Enabled Setting ( p 0 : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getApplication Enabled Setting ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Intent Services ( p 0 : ĠIntent , Ġp 1 : ĠInt ): ĠMutable List < Resolve Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . query Intent Services ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Permission Rev oked By Policy ( p 0 : ĠString , Ġp 1 : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . is Permission Rev oked By Policy ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Permission ( p 0 : ĠString , Ġp 1 : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . check Permission ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Signatures ( p 0 : ĠString , Ġp 1 : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . check Signatures ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Signatures ( p 0 : ĠInt , Ġp 1 : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . check Signatures ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Package From Preferred ( p 0 : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . remove Package From Preferred ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Permission ( p 0 : ĠPermission Info ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . add Permission ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Drawable ( p 0 : ĠString , Ġp 1 : ĠInt , Ġp 2 : ĠApplication Info ?): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Drawable ( p 0 , Ġp 1 , Ġp 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Changed Packages ( p 0 : ĠInt ): ĠChanged Packages ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Changed Packages ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġtarget Ġapplications Ġpackage Ġinfo ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Package Info ( p 0 : ĠString , Ġp 1 : ĠInt ): ĠPackage Info Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( p 0 Ġ== Ġtarget Package Info . packageName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[- ] Ġforward Ġtarget Ġpackage Ġinfo Ġ${ p 0 }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtarget Package Info ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Package Info ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġtarget Ġapplications Ġpackage Ġinfo ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Package Info ( p 0 : ĠVersion ed Package , Ġp 1 : ĠInt ): ĠPackage Info Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[- ] Ġforward Ġtarget Ġpackage Ġinfo Ġ${ p 0 }") ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Package Info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Packages Hold ing Permissions ( ĊĠĠĠĠĠĠĠ Ġp 0 : ĠArray < String >, ĊĠĠĠĠĠĠĠ Ġp 1 : ĠInt ĊĠĠĠ Ġ): ĠMutable List < Package Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Packages Hold ing Permissions ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Permission Async ( p 0 : ĠPermission Info ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . add Permission Async ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget System Available Features (): ĠArray < Feature Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getSystem Available Features () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget System Shared Library Names (): ĠArray < String >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getSystem Shared Library Names () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Intent Content Providers ( p 0 : ĠIntent , Ġp 1 : ĠInt ): ĠMutable List < Resolve Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . query Intent Content Providers ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Application Banner ( p 0 : ĠApplication Info ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getApplication Banner ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Application Banner ( p 0 : ĠString ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getApplication Banner ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Package G ids ( p 0 : ĠString ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Package G ids ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Package G ids ( p 0 : ĠString , Ġp 1 : ĠInt ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Package G ids ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Resources For Activity ( p 0 : ĠComponent Name ): ĠResources Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getResources For Activity ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Packages For Uid ( p 0 : ĠInt ): ĠArray < String >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Packages For Uid ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Permission Group Info ( p 0 : ĠString , Ġp 1 : ĠInt ): ĠPermission Group Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Permission Group Info ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Package To Preferred ( p 0 : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . add Package To Preferred ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Component Enabled Setting ( p 0 : ĠComponent Name ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getComponent Enabled Setting ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Lean back Launch Intent For Package ( p 0 : ĠString ): ĠIntent ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Lean back Launch Intent For Package ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Installed Packages ( p 0 : ĠInt ): ĠMutable List < Package Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Installed Packages ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Permission Groups ( p 0 : ĠInt ): ĠMutable List < Permission Group Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getAll Permission Groups ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetName For Uid ( p 0 : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getName For Uid ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Instant App Cookie ( p 0 : ĠByteArray ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . update Instant App Cookie ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Application Logo ( p 0 : ĠApplication Info ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getApplication Logo ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Application Logo ( p 0 : ĠString ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getApplication Logo ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Application Label ( p 0 : ĠApplication Info ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getApplication Label ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Preferred Activities ( ĊĠĠĠĠĠĠĠ Ġp 0 : ĠMutable List < Intent Filter >, ĊĠĠĠĠĠĠĠ Ġp 1 : ĠMutable List < Component Name >, ĊĠĠĠĠĠĠĠ Ġp 2 : ĠString ? ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Preferred Activities ( p 0 , Ġp 1 , Ġp 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Application Category Hint ( p 0 : ĠString , Ġp 1 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . set Application Category Hint ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Installer PackageName ( p 0 : ĠString , Ġp 1 : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . set Installer PackageName ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetUser Bad ged Label ( p 0 : ĠCharSequence , Ġp 1 : ĠUser Handle ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getUser Bad ged Label ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Request Package Install s (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . can Request Package Install s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Instant App (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . is Instant App () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Instant App ( p 0 : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . is Instant App ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetActivity Icon ( p 0 : ĠComponent Name ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getActivity Icon ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetActivity Icon ( p 0 : ĠIntent ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getActivity Icon ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcanonical To Current Package Names ( p 0 : ĠArray < String >): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . canonical To Current Package Names ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Provider Info ( p 0 : ĠComponent Name , Ġp 1 : ĠInt ): ĠProvider Info Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[- ] Ġsearching Ġprovider Ġinfo Ġfor Ġname Ġ$ p 0 ") ĊĠĠĠĠĠĠĠ Ġtarget Package Info . providers ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . name Ġ== Ġp 0 . className ) Ġreturn @ get Provider Info Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Provider Info ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Package Preferred Activities ( p 0 : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . clear Package Preferred Activities ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Package Installer (): ĠPackage Installer Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Package Installer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresolve Service ( p 0 : ĠIntent , Ġp 1 : ĠInt ): ĠResolve Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . resolve Service ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġverify Pending Install ( p 0 : ĠInt , Ġp 1 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . verify Pending Install ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Instant App Cookie (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Instant App Cookie () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetText ( p 0 : ĠString , Ġp 1 : ĠInt , Ġp 2 : ĠApplication Info ?): ĠCharSequence ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getText ( p 0 , Ġp 1 , Ġp 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresolve Content Provider ( p 0 : ĠString ?, Ġp 1 : ĠInt ): ĠProvider Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[- ] Ġsearching Ġprovider Ġinfo Ġfor Ġauthority Ġ$ p 0 ") ĊĠĠĠĠĠĠĠ Ġtarget Package Info . providers ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . authority Ġ== Ġp 0 ) Ġreturn @ resolve Content Provider Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . resolve Content Provider ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas System Feature ( p 0 : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . has System Feature ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas System Feature ( p 0 : ĠString , Ġp 1 : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . has System Feature ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Instrumentation Info ( p 0 : ĠComponent Name , Ġp 1 : ĠInt ): ĠInstrument ation Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Instrumentation Info ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Installed Applications ( p 0 : ĠInt ): ĠMutable List < Application Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Installed Applications ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetUser Bad ged Drawable For Density ( ĊĠĠĠĠĠĠĠ Ġp 0 : ĠDrawable , ĊĠĠĠĠĠĠĠ Ġp 1 : ĠUser Handle , ĊĠĠĠĠĠĠĠ Ġp 2 : ĠRect ?, ĊĠĠĠĠĠĠĠ Ġp 3 : ĠInt ĊĠĠĠ Ġ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getUser Bad ged Drawable For Density ( p 0 , Ġp 1 , Ġp 2 , Ġp 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Instant App Cookie Max Bytes (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Instant App Cookie Max Bytes () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetDefault Activity Icon (): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getDefault Activity Icon () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Preferred Packages ( p 0 : ĠInt ): ĠMutable List < Package Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Preferred Packages ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Preferred Activity ( ĊĠĠĠĠĠĠĠ Ġp 0 : ĠIntent Filter , ĊĠĠĠĠĠĠĠ Ġp 1 : ĠInt , ĊĠĠĠĠĠĠĠ Ġp 2 : ĠArray < Component Name > ?, ĊĠĠĠĠĠĠĠ Ġp 3 : ĠComponent Name ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . add Preferred Activity ( p 0 , Ġp 1 , Ġp 2 , Ġp 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Shared Libraries ( p 0 : ĠInt ): ĠMutable List < Shared Library Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Shared Libraries ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Intent Activities ( p 0 : ĠIntent , Ġp 1 : ĠInt ): ĠMutable List < Resolve Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . query Intent Activities ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetActivity Banner ( p 0 : ĠComponent Name ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getActivity Banner ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetActivity Banner ( p 0 : ĠIntent ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getActivity Banner ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Component Enabled Setting ( p 0 : ĠComponent Name , Ġp 1 : ĠInt , Ġp 2 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal PackageManager . set Component Enabled Setting ( p 0 , Ġp 1 , Ġp 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[- ] Ġerror Ġwhile Ġset Ġcomponent Ġenabled Ġsettings ", Ġexception ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġour Ġtarget Ġapp 's Ġapplication Ġinfo ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Application Info ( p 0 : ĠString , Ġp 1 : ĠInt ): ĠApplication Info Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[- ] Ġforward Ġtarget Ġapplication Ġinfo ") ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Package Info . application Info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresolve Activity ( p 0 : ĠIntent , Ġp 1 : ĠInt ): ĠResolve Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . resolve Activity ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Broadcast Re ceiv ers ( p 0 : ĠIntent , Ġp 1 : ĠInt ): ĠMutable List < Resolve Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . query Broadcast Re ceiv ers ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Xml ( p 0 : ĠString , Ġp 1 : ĠInt , Ġp 2 : ĠApplication Info ?): ĠXml Resource Parser ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Xml ( p 0 , Ġp 1 , Ġp 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetActivity Logo ( p 0 : ĠComponent Name ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getActivity Logo ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetActivity Logo ( p 0 : ĠIntent ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getActivity Logo ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Permissions By Group ( p 0 : ĠString , Ġp 1 : ĠInt ): ĠMutable List < Permission Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . query Permissions By Group ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Content Providers ( p 0 : ĠString ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt ): ĠMutable List < Provider Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . query Content Providers ( p 0 , Ġp 1 , Ġp 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Permission Info ( p 0 : ĠString , Ġp 1 : ĠInt ): ĠPermission Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Permission Info ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Permission ( p 0 : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . remove Permission ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Instrumentation ( p 0 : ĠString , Ġp 1 : ĠInt ): ĠMutable List < Instrumentation Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . query Instrumentation ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Instant App Cookie () Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . clear Instant App Cookie () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcurrent To Canonical Package Names ( p 0 : ĠArray < String >): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . current To Canonical Package Names ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Package Uid ( p 0 : ĠString , Ġp 1 : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Package Uid ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetUser Bad ged Icon ( p 0 : ĠDrawable , Ġp 1 : ĠUser Handle ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getUser Bad ged Icon ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetActivity Info ( p 0 : ĠComponent Name , Ġp 1 : ĠInt ): ĠActivity Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getActivity Info ( p 0 , Ġp 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Safe Mode (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . is Safe Mode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Installer PackageName ( p 0 : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Installer PackageName ( p 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Application Enabled Setting ( p 0 : ĠString , Ġp 1 : ĠInt , Ġp 2 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal PackageManager . set Application Enabled Setting ( p 0 , Ġp 1 , Ġp 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Service Info ( p 0 : ĠComponent Name , Ġp 1 : ĠInt ): ĠService Info Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[ + ] Ġget Service Info Ġ[ + ] Ġget Ġservice Ġinfo Ġ$ p 0 ") ĊĠĠĠĠĠĠĠ Ġtarget Package Info . services ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . name Ġ== Ġp 0 . className ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[- ] Ġget Service Info Ġ[- ] Ġreturn Ġ${ it } Ġwith Ġmetadata Ġ${ it . metaData }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ getService Info Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getService Info ( p 0 , Ġp 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" PackageManager Helper Ġ[- ] Ġget Service Info ", Ġexception ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġexception ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Installed Modules ( flags : ĠInt ): ĠMutable List < Module Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Installed Modules ( flags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Sus pended Package App Extras (): ĠBundle ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getS us pended Package App Extras () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Wh itelisted Restricted Permissions ( ĊĠĠĠĠĠĠĠ ĠpackageName : ĠString , ĊĠĠĠĠĠĠĠ Ġwhitelist Flag : ĠInt ĊĠĠĠ Ġ): ĠMutable Set < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Wh itelisted Restricted Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhitelist Flag ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Package Archive Info ( archive FilePath : ĠString , Ġflags : ĠInt ): ĠPackage Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . get Package Archive Info ( archive FilePath , Ġflags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Package Sus pended ( packageName : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . is Package Sus pended ( packageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Package Sus pended (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . is Package Sus pended () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . equals ( other ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Device Up grading (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . is Device Up grading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Signing Certificate ( ĊĠĠĠĠĠĠĠ ĠpackageName : ĠString , ĊĠĠĠĠĠĠĠ Ġcertificate : ĠByteArray , ĊĠĠĠĠĠĠĠ Ġtype : ĠInt ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . has Signing Certificate ( packageName , Ġcertificate , Ġtype ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Signing Certificate ( uid : ĠInt , Ġcertificate : ĠByteArray , Ġtype : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . has Signing Certificate ( uid , Ġcertificate , Ġtype ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Synt hetic App Details Activity Enabled ( packageName : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getS ynt hetic App Details Activity Enabled ( packageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Module Info ( packageName : ĠString , Ġflags : ĠInt ): ĠModule Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . getModule Info ( packageName , Ġflags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Wh itelisted Restricted Permission ( ĊĠĠĠĠĠĠĠ ĠpackageName : ĠString , ĊĠĠĠĠĠĠĠ Ġpermission : ĠString , ĊĠĠĠĠĠĠĠ Ġwhitelist Flags : ĠInt ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . add Wh itelisted Restricted Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhitelist Flags ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Wh itelisted Restricted Permission ( ĊĠĠĠĠĠĠĠ ĠpackageName : ĠString , ĊĠĠĠĠĠĠĠ Ġpermission : ĠString , ĊĠĠĠĠĠĠĠ Ġwhitelist Flags : ĠInt ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal PackageManager . remove Wh itelisted Restricted Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhitelist Flags ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }