package Ġcom . r ak uten . tech . mobile . test app . ui . permission Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . r ak uten . tech . mobile . mini app . Mini App Ċ import Ġcom . r ak uten . tech . mobile . mini app . permission . Mini App Custom Permission Ċ import Ġcom . r ak uten . tech . mobile . mini app . permission . Mini App Custom Permission Result Ċ import Ġcom . r ak uten . tech . mobile . mini app . permission . Mini App Custom Permission Type Ċ import Ġcom . r ak uten . tech . mobile . mini app . test app . R Ċ import Ġcom . r ak uten . tech . mobile . mini app . test app . databinding . List Custom Permission Binding Ċ import Ġcom . r ak uten . tech . mobile . test app . ui . base . Base Activity Ċ import Ġcom . r ak uten . tech . mobile . test app . ui . settings . AppSettings Ċ Ċ class ĠMini App Permission Settings Activity ( private Ġval Ġmini app : ĠMini App ) Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġconstructor () Ġ: Ġthis ( Mini App . instance ( AppSettings . instance . mini AppSettings )) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpermission Settings Adapter : ĠMini App Permission Settings Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmini AppId : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠList Custom Permission Binding ĊĠĠĠ Ġprivate Ġval Ġnames For Adapter : ĠArrayList < Mini App Custom Permission Type > Ġ= Ġarray ListOf () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQ _ CODE _ PERMISSION S _ UPDATE Ġ= Ġ 1 0 1 0 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġmini AppId Tag Ġ= Ġ" mini _ app _ id _ tag " ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Start Intent ( context : ĠContext , Ġmini AppId : ĠString ): ĠIntent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( context , ĠMini App Permission Settings Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( mini AppId Tag , Ġmini AppId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġshow Back Icon () ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . list _ custom _ permission ) ĊĊĠĠĠĠĠĠĠ Ġrender Screen () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Screen () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! intent . has Extra ( mini AppId Tag )) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġmini AppId Ġ= Ġintent . getString Extra ( mini AppId Tag ) Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠ Ġinit Adapter () ĊĠĠĠĠĠĠĠ Ġval Ġresults For Adapter : ĠArrayList < Mini App Custom Permission Result > Ġ= Ġarray ListOf () ĊĊĠĠĠĠĠĠĠ Ġmini app . get Custom Permissions ( mini AppId ). pair Values . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames For Adapter . add ( it . first ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults For Adapter . add ( it . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpermission Settings Adapter . add Permission List ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames For Adapter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults For Adapter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( names For Adapter . isEmpty ()) Ġbinding . empty View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġelse Ġbinding . empty View . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġpermission Settings Adapter Ġ= ĠMini App Permission Settings Adapter () ĊĠĠĠĠĠĠĠ Ġbinding . list Custom Permission . layout Manager Ġ= ĠLinearLayoutManager ( application Context ) ĊĠĠĠĠĠĠĠ Ġbinding . list Custom Permission . adapter Ġ= Ġpermission Settings Adapter ĊĠĠĠĠĠĠĠ Ġbinding . list Custom Permission . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration ( this , ĠDiv ider Item Decoration . VERTICAL ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . settings _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu ?. find Item ( R . id . settings _ menu _ save )?. isEnabled Ġ= Ġnames For Adapter . isNotEmpty () ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Prepare Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . settings _ menu _ save Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Save Action () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Save Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġstore Ġvalues Ġin ĠSDK Ġcache ĊĠĠĠĠĠĠĠ Ġval Ġmini App Custom Permission Ġ= ĠMini App Custom Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmini AppId Ġ= Ġmini AppId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpair Values Ġ= Ġpermission Settings Adapter . permission Pairs ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmini app . set Custom Permissions ( mini App Custom Permission ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġecho Ġa Ġresult Ġthat Ġpermissions Ġhas Ġbeen Ġsaved ĊĠĠĠĠĠĠĠ Ġset Result ( REQ _ CODE _ PERMISSION S _ UPDATE , ĠIntent ()) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ } Ċ