package Ġcom . sh arm ad hir aj . installed _ apps Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent . FLAG _ ACTIVITY _ NEW _ TASK Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Settings . ACTION _ APPLICATION _ DETAILS _ SETTINGS Ċ import Ġandroid . widget . Toast Ċ import Ġandroid . widget . Toast . LENGTH _ LONG Ċ import Ġandroid . widget . Toast . LENGTH _ SHORT Ċ import Ġcom . sh arm ad hir aj . installed _ apps . Util . Companion . convert App ToMap Ċ import Ġcom . sh arm ad hir aj . installed _ apps . Util . Companion . getContext Ċ import Ġcom . sh arm ad hir aj . installed _ apps . Util . Companion . get PackageManager Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . plugin . common . Method Channel . Result Ċ import Ġio . flutter . plugin . common . Plugin Registry . Registrar Ċ import Ġjava . util . Locale . EN GL ISH Ċ Ċ class ĠInstalled Apps Plugin ( private Ġval Ġregist rar : ĠRegist rar ) Ġ: ĠMethod Call Handler Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġregister With ( regist rar : ĠRegist rar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠMethod Channel ( regist rar . messenger (), Ġ" installed _ apps ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( Installed Apps Plugin ( regist rar )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall ( call : ĠMethod Call , Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" get Installed Apps " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinclude System Apps Ġ= Ġcall . argument (" exclude _ system _ apps ") Ġ?: Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwith Icon Ġ= Ġcall . argument (" with _ icon ") Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Prefix : ĠString Ġ= Ġcall . argument (" package _ name _ prefix ") Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( get Installed Apps ( include System Apps , Ġwith Icon , ĠpackageName Prefix )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" start App " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName : ĠString ? Ġ= Ġcall . argument (" package _ name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( start App ( packageName )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" open Settings " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName : ĠString ? Ġ= Ġcall . argument (" package _ name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Settings ( packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" toast " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġcall . argument (" message ") Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshort Ġ= Ġcall . argument (" short _ length ") Ġ?: Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( message , Ġshort ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" getApp Info " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName : ĠString Ġ= Ġcall . argument (" package _ name ") Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( getApp Info ( get PackageManager ( regist rar ), ĠpackageName )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" is System App " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName : ĠString Ġ= Ġcall . argument (" package _ name ") Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( is System App ( get PackageManager ( regist rar ), ĠpackageName )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Installed Apps ( exclude System Apps : ĠBoolean , Ġwith Icon : ĠBoolean , ĠpackageName Prefix : ĠString ): ĠList < Map < String , ĠAny ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpackage Manager Ġ= Ġget PackageManager ( regist rar ) ĊĠĠĠĠĠĠĠ Ġvar Ġinstalled Apps Ġ= Ġpackage Manager . get Installed Applications ( 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( exclude System Apps ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstalled Apps Ġ= Ġinstalled Apps . filter Ġ{ Ġapp Ġ-> Ġ! is System App ( package Manager , Ġapp . packageName ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( packageName Prefix . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstalled Apps Ġ= Ġinstalled Apps . filter Ġ{ Ġapp Ġ-> Ġapp . packageName . startsWith ( packageName Prefix . toLowerCase ( EN GL ISH )) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinstalled Apps . map Ġ{ Ġapp Ġ-> Ġconvert App ToMap ( package Manager , Ġapp , Ġwith Icon ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart App ( packageName : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( packageName . isNull Or Blank ()) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlaunch Intent Ġ= Ġget PackageManager ( regist rar ). get Launch Intent For Package ( packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregist rar . context (). startActivity ( launch Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ; ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoast ( text : ĠString , Ġshort : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( getContext ( regist rar ), Ġtext , Ġif Ġ( short ) ĠLEN GTH _ SHORT Ġelse ĠLEN GTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis System App ( package Manager : ĠPackage Manager , ĠpackageName : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpackage Manager . get Launch Intent For Package ( packageName ) Ġ== Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Settings ( packageName : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠFLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠACTION _ APPLICATION _ DETAILS _ SETTINGS ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . from Parts (" package ", ĠpackageName , Ġnull ) ĊĠĠĠĠĠĠĠ Ġintent . data Ġ= Ġuri ĊĠĠĠĠĠĠĠ ĠgetContext ( regist rar ). startActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget App Info ( package Manager : ĠPackage Manager , ĠpackageName : ĠString ): ĠMap < String , ĠAny ?> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġinstalled Apps Ġ= Ġpackage Manager . get Installed Applications ( 0 ) ĊĠĠĠĠĠĠĠ Ġinstalled Apps Ġ= Ġinstalled Apps . filter Ġ{ Ġapp Ġ-> Ġapp . packageName Ġ== ĠpackageName Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( installed Apps . isEmpty ()) Ġnull ĊĠĠĠĠĠĠĠ Ġelse Ġconvert App ToMap ( package Manager , Ġinstalled Apps [ 0 ], Ġtrue ); ĊĠĠĠ Ġ} Ċ Ċ } Ċ