package Ġcom . al mo ul lim . background _ location Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . content .* Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . location . Location Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Handler Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġandroid . os . Build Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . local broadcast manager . content . Local Broadcast Manager Ċ import Ġcom . al mo ul lim . background _ location . Utils Ċ import Ġcom . al mo ul lim . background _ location . Location Updates Service Ċ import Ġcom . al mo ul lim . background _ location . R Ċ 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 Ċ import Ġio . flutter . plugin . common . Plugin Registry . Registrar Ċ Ċ class ĠBackground Location Plugin () Ġ: ĠMethod Call Handler , ĠPlugin Registry . Request Permissions Result Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġregist rar : ĠRegist rar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġchannel : ĠMethod Channel ĊĠĠĠ Ġprivate Ġvar Ġmy Receiver : ĠMy Receiver ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠĠĠ Ġprivate Ġvar Ġm Service : ĠLocation Updates Service ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Bound : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġregister With ( regist rar : ĠRegist rar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠMethod Channel ( regist rar . messenger (), Ġ" al mo ul lim . com / background _ location ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( Background Location Plugin ( regist rar , Ġchannel )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" com . al mo ul lim . Log . Tag " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ PERMISSION S _ REQUEST _ CODE Ġ= Ġ 3 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( regist rar : ĠRegist rar , Ġchannel : ĠMethod Channel ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . regist rar Ġ= Ġregist rar ĊĠĠĠĠĠĠĠ Ġthis . channel Ġ= Ġchannel ĊĊĊĠĠĠĠĠĠĠ Ġmy Receiver Ġ= ĠMy Receiver () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Utils . request ing Location Updates ( regist rar . active Context ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! check Permissions ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permissions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( regist rar . active Context ()). register Receiver ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Receiver !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent Filter ( Location Updates Service . ACTION _ BRO ADCAST ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall ( call : ĠMethod Call , Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . method Ġ== Ġ" stop _ location _ service " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( regist rar . active Context ()). unregister Receiver ( my Receiver !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( regist rar . active Context (), ĠLocation Updates Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . setAction ("${ regist rar . active Context (). packageName }. service _ requests ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Location Updates Service . ACTION _ SERVICE _ REQUEST , ĠLocation Updates Service . ACTION _ STOP _ FO REG ROUND _ SERVICE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( regist rar . active Context ()). send Broadcast ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( 0 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . method Ġ== Ġ" start _ location _ service " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( regist rar . active Context ()). register Receiver ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Receiver !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent Filter ( Location Updates Service . ACTION _ BRO ADCAST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Bound ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlocation Callback : ĠLong ? Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Callback Ġ= Ġcall . argument (" location Callback ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcallback Handle : ĠLong ? Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Handle Ġ= Ġcall . argument (" callback Handle ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart On Boot : ĠBoolean ? Ġ= Ġcall . argument (" start On Boot ") Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinterval : ĠInt ? Ġ= Ġcall . argument (" interval ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfast est Interval : ĠInt ? Ġ= Ġcall . argument (" fast est _ interval ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpriority : ĠInt ? Ġ= Ġcall . argument (" priority ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistance Filter : ĠDouble ? Ġ= Ġcall . argument (" distance _ filter ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( regist rar . active Context (), ĠLocation Updates Service :: class . java ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . setAction ( Location Updates Service . ACTION _ START _ FO REG ROUND _ SERVICE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" start On Boot ", Ġstart On Boot ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" interval ", Ġinterval ?. to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" fast est _ interval ", Ġfast est Interval ?. to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" priority ", Ġpriority ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" distance _ filter ", Ġdistance Filter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" callback Handle ", Ġcallback Handle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" location Callback ", Ġlocation Callback ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . start Foreground Service ( regist rar . active Context (), Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( 0 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . method Ġ== Ġ" set _ android _ notification " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel ID : ĠString ? Ġ= Ġcall . argument (" channel ID "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Title : ĠString ? Ġ= Ġcall . argument (" title "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Message : ĠString ? Ġ= Ġcall . argument (" message "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Icon : ĠString ? Ġ= Ġcall . argument (" icon "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Text : ĠString ? Ġ= Ġcall . argument (" action Text "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcallback : ĠLong Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Ġ= Ġcall . argument (" action Callback ") Ġ?: Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel ID Ġ!= Ġnull ) ĠLocation Updates Service . NOTIFICATION _ CHANNEL _ ID Ġ= Ġchannel ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notification Title Ġ!= Ġnull ) ĠLocation Updates Service . NOTIFICATION _ TITLE Ġ= Ġnotification Title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notification Message Ġ!= Ġnull ) ĠLocation Updates Service . NOTIFICATION _ MESSAGE Ġ= Ġnotification Message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notification Icon Ġ!= Ġnull ) ĠLocation Updates Service . NOTIFICATION _ ICON Ġ= Ġnotification Icon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Text Ġ!= Ġnull ) ĠLocation Updates Service . NOTIFICATION _ ACTION Ġ= Ġaction Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( callback Ġ!= Ġ 0 L ) ĠLocation Updates Service . NOTIFICATION _ ACTION _ CALLBACK Ġ= Ġcallback ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġregist rar . active Context (). get SharedPreferences (" background Location Preferences ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pref . getBoolean (" location Active ", Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( regist rar . active Context (), ĠLocation Updates Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . setAction ("${ regist rar . active Context (). packageName }. service _ requests ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Location Updates Service . ACTION _ SERVICE _ REQUEST , ĠLocation Updates Service . ACTION _ UPDATE _ NOTIFICATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( regist rar . active Context ()). send Broadcast ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( 0 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . method Ġ== Ġ" is _ service _ running " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager : ĠActivity Manager Ġ= Ġregist rar . active Context (). getSystem Service ( Context . ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( service Ġin Ġmanager . get Running Services ( Integer . MAX _ VALUE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Location Updates Service :: class . java . getName () Ġ== Ġservice . service . get ClassName ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( service . foreground ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( 0 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString > ?, Ġgrant Results : ĠInt Array ?): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" on Request Permission Result ") ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ PERMISSION S _ REQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Results !!. isEmpty () Ġ-> ĠLog . i ( TAG , Ġ" User Ġinteraction Ġwas Ġcancelled .") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ġ-> Ġm Service !!. request Location Updates () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠToast . makeText ( regist rar . active Context (), ĠR . string . permission _ den ied _ explanation , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠMy Receiver Ġ: ĠBroadcast Receiver () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġintent . get Parcelable Extra < Location >( Location Updates Service . EXTRA _ LOCATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Map Ġ= ĠHashMap < String , ĠAny >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Map [" latitude "] Ġ= Ġlocation . latitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Map [" longitude "] Ġ= Ġlocation . longitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Map [" altitude "] Ġ= Ġlocation . altitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Map [" accuracy "] Ġ= Ġlocation . accuracy . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Map [" be aring "] Ġ= Ġlocation . be aring . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Map [" speed "] Ġ= Ġlocation . speed . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Map [" time "] Ġ= Ġlocation . time . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Map [" is _ mock "] Ġ= Ġlocation . is From Mock Provider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method (" location ", Ġlocation Map , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Permissions (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPackage Manager . PERMISSION _ GRAN TED Ġ== ĠActivity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregist rar . active Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Permissions () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshould Provide R ationale Ġ= ĠActivity Compat . should Show Request Permission R ationale ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregist rar . activity (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( should Provide R ationale ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Display ing Ġpermission Ġr ationale Ġto Ġprovide Ġadditional Ġcontext .") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( regist rar . active Context (), ĠR . string . permission _ ration ale , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Request ing Ġpermission ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregist rar . activity (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Manifest . permission . ACCESS _ F INE _ LOCATION ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ PERMISSION S _ REQUEST _ CODE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ