package Ġcom . pr ate ek j . sn ooper . infra Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ Ċ class ĠApp Permission Checker ( private Ġval Ġactivity : ĠActivity ) Ġ{ ĊĠ Ġprivate Ġvar Ġpermission Request Code : ĠInt Ġ= Ġ 0 ĊĠ Ġprivate Ġvar Ġcall Back : ĠPermission Request CallBack ? Ġ= Ġnull ĊĊĠ Ġfun Ġhandle Permission ( ĊĠĠĠ Ġpermission : ĠString , ĊĠĠĠ Ġpermission Request Code : ĠInt , ĊĠĠĠ Ġcall Back : ĠPermission Request CallBack ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġthis . permission Request Code Ġ= Ġpermission Request Code ĊĠĠĠ Ġthis . call Back Ġ= Ġcall Back ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠ Ġpermission ĊĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠ ĠarrayOf ( permission ), ĊĠĠĠĠĠĠĠĠĠ Ġpermission Request Code ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcall Back . permission Granted () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġcall Back . permission Granted () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġhandle Permission Result ( ĊĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠ Ġpermissions : ĠArray < String >, ĊĠĠĠ Ġgrant Results : ĠInt Array ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġif Ġ( request Code Ġ== Ġpermission Request Code Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠ Ġcall Back !!. permission Granted () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġcall Back !!. permission Denied () ĊĠĠĠ Ġ} ĊĊĠ Ġ} ĊĊĠ Ġinterface ĠPermission Request CallBack Ġ{ ĊĠĠĠ Ġfun Ġpermission Granted () ĊĠĠĠ Ġfun Ġpermission Denied () ĊĠ Ġ} Ċ }