package Ġeu . sch n uff . bon fo . helpers Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ Ċ private Ġconst Ġval ĠPER MISSION _ EXTERNAL _ STORAGE Ġ= Ġ 1 Ċ private Ġvar Ġon Granted Callbacks Ġ= Ġmutable ListOf < () Ġ-> ĠUnit >() Ċ Ċ class ĠRequest Handler Ġ: ĠActivity (), ĠActivity Compat . On Request Permissions Result Callback Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ){ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION _ EXTERNAL _ STORAGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpermission Ġwas Ġgranted , Ġy ay ! ĠDo Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcontacts - related Ġtask Ġyou Ġneed Ġto Ġdo . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Granted Resolver () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( Manifest . permission . READ _ EXTERNAL _ STORAGE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION _ EXTERNAL _ STORAGE ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġpermission External Storage Helper Ġ( context : ĠContext , Ġon Granted : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġon Granted Callbacks . add ( on Granted ) ĊĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( context , ĠManifest . permission . READ _ EXTERNAL _ STORAGE ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( context , ĠRequest Handler :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġon Granted Resolver () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġon Granted Resolver () Ġ{ ĊĠĠĠ Ġwhile Ġ( on Granted Callbacks . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Granted Callbacks . remove At ( 0 )() ĊĠĠĠ Ġ} Ċ }