package Ġcom . ru y ano . contacts loader example . util Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ Ċ class ĠPermission Manager ( val Ġm Activity : ĠAppCompatActivity , Ġval Ġpermission Manager Listener : ĠPermission Manager Listener ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠREAD _ CONTACT S _ PERMISSION _ REQUEST _ CODE Ġ= Ġ 9 9 9 ĊĊĠĠĠ Ġfun Ġcheck Read Contacts Permission () Ġ= ĊĠĠĠĠĠĠĠ ĠContext Compat . check Self Permission ( m Activity , ĠManifest . permission . READ _ CONTACT S ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĊĠĠĠ Ġfun Ġrequest Read Contacts Permission () Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( m Activity , ĠarrayOf ( Manifest . permission . READ _ CONTACT S ), ĠREAD _ CONTACT S _ PERMISSION _ REQUEST _ CODE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREAD _ CONTACT S _ PERMISSION _ REQUEST _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( grant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpermission Ġgranted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Manager Listener . on Permission Granted () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpermission Ġrejected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Manager Listener . on Permission Rejected () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠPermission Manager Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Permission Granted () ĊĠĠĠĠĠĠĠ Ġfun Ġon Permission Rejected () ĊĠĠĠ Ġ} Ċ Ċ }