package Ġcom . github . off ile . permissions helper . overlay čĊč Ċ import Ġandroid . Manifest č Ċ import Ġandroid . content . Intent č Ċ import Ġandroid . net . Uri č Ċ import Ġandroid . os . Build č Ċ import Ġandroid . provider . Settings č Ċ import Ġandroidx . annotation . Requires Api č Ċ import Ġcom . github . off ile . permissions helper . core .* č Ċ import Ġcom . github . off ile . permissions helper . util . Permissions Util čĊčĊč Ċ /** čĊ Ġ* ĠCheck Ġoverlay Ġpermissions čĊ Ġ* Ġ@ see ĠManifest . permission . SYSTEM _ ALERT _ WINDOW čĊ Ġ*/ č Ċ class ĠDraw Overlay Request ( source : ĠSource , Ġprivate Ġval Ġon Show R ationale : ĠDefault Show R ationale Fun ?) Ġ: čĊĠĠĠ ĠRequest < Result >( source ) Ġ{ čĊčĊĠĠĠ Ġprivate Ġfun Ġcan Draw Overlay s (): ĠBoolean { čĊĠĠĠĠĠĠĠ Ġreturn ĠPermissions Util . can Draw Overlay s ( source . context ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġrequest ( callback : ĠResult Callback < Result >) Ġ{ čĊĠĠĠĠĠĠĠ Ġif ( can Draw Overlay s ()){ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( Default Result . gr anted ) čĊĠĠĠĠĠĠĠ Ġ} else Ġif Ġ( on Show R ationale Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Show R ationale . on Show R ationale ( object Ġ: ĠShow R ationale Scope ( source . context ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġproceed () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Overlay Permission ( callback ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcancel () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( Default Result . den ied ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠĠĠĠĠ Ġ} else Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Overlay Permission ( callback ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) čĊĠĠĠ Ġprivate Ġfun Ġrequest Overlay Permission ( callback : ĠResult Callback < Result >) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( čĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . ACTION _ MANAGE _ OVER LAY _ PERMISSION , čĊĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse (" package :" Ġ+ Ġsource . packageName ), čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġsource . startActivity For Result ( intent ){ Ġ_, Ġ_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( can Draw Overlay s ()){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( Default Result . gr anted ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( Default Result . den ied ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ }