package Ġcom . imo oc . lib _ base . base Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . yan zh en j ie . permission . Action Ċ import Ġcom . yan zh en j ie . permission . And Permission Ċ import Ġcom . yan zh en j ie . permission . runtime . Permission Ċ Ċ abstract Ġclass ĠBase Activity Ġ: ĠAppCompatActivity (){ ĊĊĠĠĠ Ġprotected Ġval Ġcode Window Request Ġ= Ġ 1 0 0 0 ĊĊĠĠĠ Ġ// èİ·åıĸ å¸ĥå±Ģ ID ĊĠĠĠ Ġabstract Ġfun Ġget Layout Id (): ĠInt ĊĊĠĠĠ Ġ// èİ·åıĸ æłĩé¢ĺ ĊĠĠĠ Ġabstract Ġfun Ġget Title Text (): ĠString ĊĊĠĠĠ Ġ// åĪĿå§ĭåĮĸ ĊĠĠĠ Ġabstract Ġfun Ġinit View () ĊĊĠĠĠ Ġ// æĺ¯åĲ¦ æĺ¾ç¤º è¿ĶåĽŀ éĶ® ĊĠĠĠ Ġabstract Ġfun Ġis Show Back (): ĠBoolean ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( get Layout Id ()) ĊĊĠĠĠĠĠĠĠ Ġif ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport ActionBar ?. let { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . title Ġ= Ġget Title Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Display Home As Up Enabled ( is Show Back ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . elevation Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( item . itemId Ġ== Ġandroid . R . id . home ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// æ£ĢæŁ¥ çªĹåı£ æĿĥéĻĲ ĊĠĠĠ Ġprotected Ġfun Ġcheck Window Permission (): Boolean { ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSettings . can Draw Overlay s ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// çĶ³è¯· æĿĥéĻĲ ĊĠĠĠ Ġprotected Ġfun Ġrequest Window Permission ( packageName : ĠString ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( Intent ( Settings . ACTION _ MANAGE _ OVER LAY _ PERMISSION , ĠUri . parse (" package :$ packageName ")), code Window Request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// æ£ĢæŁ¥ æĿĥéĻĲ ĊĠĠĠ Ġprotected Ġfun Ġcheck Permission ( permission : ĠString ): Boolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcheck Self Permission ( permission ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// æ£ĢæŁ¥ å¤ļä¸ª æĿĥéĻĲ ĊĠĠĠ Ġprotected Ġfun Ġcheck Permission ( permission : ĠArray < String >): Boolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Self Permission ( it ) Ġ== ĠPackage Manager . PERMISSION _ DEN IED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// è¯·æ±Ĥ æĿĥéĻĲ ĊĠĠĠ Ġprotected Ġfun Ġrequest Permission ( permission : ĠArray < String >, Ġgranted : ĠAction < List < String >> ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnd Permission . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. runtime () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. permission ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Granted ( gr anted ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }