package Ġcom . example . demo Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġcom . example . base . delegate . Preference Delegate Ċ import Ġcom . example . base . util . Log Util Ċ import Ġcom . example . demo . databinding . Activity Main 2 Binding Ċ import Ġcom . example . demo . permission . request Permission By Cor outines Ċ import Ġkotlinx . coroutines .* Ċ Ċ class ĠMainActivity 2 Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Bind Ġ: ĠActivity Main 2 Binding ĊĠĠĠ Ġprivate Ġvar Ġm Is First Ġ Ġby ĠPreference Delegate ( this , Ġ" is First ", true ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpermissions Ġ= ĠarrayOf ( Manifest . permission . CAMERA , ĠManifest . permission . RECORD _ AUDIO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġm Bind Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ main 2 ) ĊĊĠĠĠĠĠĠĠ Ġm Bind . b . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest (* permissions ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest ( var arg Ġp Ġ: ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreal Permissions Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( permission Ġin Ġp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Is First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal Permissions . add ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow Ġ= ĠActivity Compat . should Show Request Permission R ationale ( this , Ġpermission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . d (" ä¸į åĨį å±ķç¤º ï¼ļ $ permission ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal Permissions . add ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( m Is First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Is First Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpp Ġ= Ġreal Permissions . to Typed Array () ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrequest Permission By Cor outines (* pp ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . d (" result : Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! result . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpermissions Ġ= Ġresult . fail Permission !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest (* permissions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }