package Ġme . edu ardo . android App Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . vm ad al in . eas yper missions . Easy Permissions Ċ import Ġcom . vm ad al in . eas yper missions . dialogs . Settings Dialog Ċ import Ġme . edu ardo . android App . databinding . Activity Main Binding ĊĊ Ċ const Ġval ĠPER MISSION _ REQUEST _ CODE Ġ= Ġ 1 Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠEasy Permissions . Permission Callbacks Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġpermissions Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION , ĊĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠActivity Main Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. hide () ĊĊĠĠĠĠĠĠĠ Ġval Ġnav Cont ro ler Ġ= Ġfind Nav Controller ( R . id . navigation ) ĊĠĠĠĠĠĠĠ Ġbinding . bn v Bottom Menu . setup With Nav Controller ( nav Cont ro ler ) ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( check Permission ( permissions )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . bn v Bottom Menu . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Alert . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . bn v Bottom Menu . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Alert . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission ( permissions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Permission ( permission : ĠArray < String >) Ġ= ĠEasy Permissions . has Permissions ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ Ġ* permissions ĊĠĠĠ Ġ) ĊĊĊĠĠĠ Ġfun Ġrequest Permission ( permission : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ ĠEasy Permissions . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġpermission Ġis Ġrequired Ġto Ġuse Ġthe Ġapp !", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION _ REQUEST _ CODE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* permissions ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Permissions Denied ( request Code : ĠInt , Ġperms : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Easy Permissions . permission Per manently Denied ( this , Ġperms . first ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Dialog . Builder ( this ). build (). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Permissions Granted ( request Code : ĠInt , Ġperms : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . bn v Bottom Menu . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġbinding . tv Alert . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < out ĠString >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ ĠEasy Permissions . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊĊĊ