package Ġver ge currency . ver ge wallet . view . ui . activity . first launch Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . widget . Switch Compat Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġkotlinx . android . synt hetic . main . activity _ permissions .* Ċ import Ġver ge currency . ver ge wallet . R Ċ import Ġver ge currency . ver ge wallet . helpers . utils . Permissions Utils Ċ import Ġver ge currency . ver ge wallet . service . model . Permission Construct Ċ import Ġver ge currency . ver ge wallet . view . base . Base Activity Ċ import Ġver ge currency . ver ge wallet . view model . Permissions ViewModel Ċ Ċ class ĠPermissions Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnext Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlocation Switch : ĠSwitch Compat ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcamera Switch : ĠSwitch Compat ĊĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpermissions Array : ĠArrayList < Permission Construct > ĊĊĠĠĠ Ġprivate Ġvar Ġm ViewModel : ĠPermissions ViewModel ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ permissions ) ĊĊĠĠĠĠĠĠĠ Ġinit Components () ĊĊĠĠĠĠĠĠĠ Ġm ViewModel Ġ= ĠViewModel Provider ( this ). get ( Permissions ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Permission Construct s (): ĠArrayList < Permission Construct > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġperms Array : ĠArrayList < Permission Construct > Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġperms Array . add ( Permission Construct ( Manifest . permission . ACCESS _ CO AR SE _ LOCATION , Ġ 1 , Ġ" This Ġpermission Ġis Ġneeded Ġin Ġorder Ġto Ġaccess Ġgeo location Ġdata Ġto Ġdisplay Ġyour Ġlocation Ġwhen Ġusing ĠTor ", Ġlocation Switch )) ĊĠĠĠĠĠĠĠ Ġperms Array . add ( Permission Construct ( Manifest . permission . CAMERA , Ġ 2 , Ġ" This Ġpermission Ġis Ġneeded Ġin Ġorder Ġto Ġscan Ġa ĠQR ĠCode Ġcontaining Ġa ĠV erge ĠAddress Ġor Ġa ĠQR - Encoded Ġpaper Ġkey ", Ġcamera Switch )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġperms Array ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// TODO Ġ: ĠNext Ġstream Ġ- Ġtest Ġall Ġthis . ĊĠĠĠ Ġprivate Ġfun Ġinit Components () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlocation Switch Ġ= Ġuse _ bio metrics _ switch ĊĠĠĠĠĠĠĠ Ġcamera Switch Ġ= Ġpermissions _ camera _ switch ĊĊĠĠĠĠĠĠĠ Ġpermissions Array Ġ= Ġinit Permission Construct s () ĊĊĊĠĠĠĠĠĠĠ Ġnext Button Ġ= Ġpermission _ continue ĊĠĠĠĠĠĠĠ Ġnext Button . setOnClickListener ( next Button Listener ()) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( permission Ġin Ġpermissions Array ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission . component . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Permissions Utils . is Permission Granted ( permission . permission , Ġthis )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPermissions Utils . request Permission ( permission . permission , Ġpermission . explanation Message , Ġpermission . permission Code , Ġthis ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Permission Ġhas Ġalready Ġbeen Ġgranted .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnext Button Listener (): ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠView . OnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel !!. set First Launch ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( application Context , ĠEnd Setup Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// on Ġpurpose ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" No pe .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// this Ġshould Ġbe Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions Array . get ( 0 ). permission Code Ġ-> Ġpermissions Array . get ( 0 ). component . isChecked Ġ= ĠPermissions Utils . is Permission Granted ( permissions Array . get ( 0 ). permission , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions Array . get ( 1 ). permission Code Ġ-> Ġpermissions Array . get ( 1 ). component . isChecked Ġ= ĠPermissions Utils . is Permission Granted ( permissions Array . get ( 1 ). permission , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊ