package Ġcom . gr umpy sh oe . modules . permission manager . sample Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . TextView Ċ import Ġcom . gr umpy sh oe . module . permission manager . Permission Manager Ċ import Ġcom . gr umpy sh oe . module . permission manager . impl . Permission ManagerImpl Ċ import Ġcom . gr umpy sh oe . module . permission manager . model . Permission Request Explanation Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ// Ġget Ġinstance Ġof Ġpermission Ġmanager ĊĠĠĠ Ġprivate Ġval Ġpermission Manager : ĠPermission Manager Ġ= ĠPermission ManagerImpl ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġbutton . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on UI Ġ{ Ġit . text Ġ= Ġ" Permission ĠStatus :\ n \ n ..." Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Manager . check Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions Ġ= ĠarrayOf ( Manifest . permission . ACCESS _ F INE _ LOCATION , ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION , ĠManifest . permission . READ _ PHONE _ STATE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Permission Result Ġ= Ġ{ Ġpermission Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Permission Manager ", Ġ" Permission Ġres ul \ n - Ġgranted : Ġ${ permission Result . get Granted () }\ n - Ġdenied : Ġ${ permission Result . get Denied () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on UI Ġ{ Ġit . text Ġ= Ġ" Permission ĠStatus :\ n \ n GRAN TED :\ n ${ permission Result . get Granted () }\ n \ n DEN IED :\ n ${ permission Result . get Denied () }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Request Pre Execute Explanation Ġ= ĠPermission Request Explanation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Pre ĠCustom ĠPermission ĠHint ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" The ĠApp Ġwill Ġrequest Ġthe Ġpermissions Ġ... "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Request Retry Explanation Ġ= ĠPermission Request Explanation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Retry ĠCustom ĠPermission ĠHint ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" You Ġdenied Ġthe Ġpermissions Ġpreviously Ġbut Ġthis Ġpermissions Ġare Ġneeded Ġbecause Ġ... "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Code Ġ= Ġ 1 2 3 ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġhandle Ġpermission Ġrequest Ġresult ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpermission Manager . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun ĠTextView . on UI ( action : Ġ( TextView ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ