package Ġyet . util . app Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Fragment Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build ĊĊ Ċ fun ĠContext . has Perm ( p : ĠString ): ĠBoolean Ġ{ Ċ ĉ return Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ Ċĉ ĉ PackageManager . PERMISSION _ GRAN TED Ġ== Ġthis . check Self Permission ( p ) Ċ ĉ } Ġelse Ġ{ Ċĉ ĉ true Ċ ĉ } Ċ } ĊĊ Ċ fun ĠActivity . need Perm ( p : ĠString , Ġblock : Ġ( Boolean ) Ġ-> ĠUnit ) Ġ{ Ċ ĉ val Ġperm Ġ= ĠP erm ( hash Set Of ( p )) Ċ ĉ perm . on Result Ġ= Ġ{ Ċĉ ĉ block ( it [ p ] Ġ?: Ġtrue ) Ċ ĉ } Ċ ĉ perm . req ( this ) Ċ } Ċ Ċ fun ĠActivity . need Perm ( p Set : ĠSet < String >, Ġblock : Ġ( Map < String , ĠBoolean >) Ġ-> ĠUnit ) Ġ{ Ċ ĉ val Ġperm Ġ= ĠP erm ( p Set . to HashSet ()) Ċ ĉ perm . on Result Ġ= Ġ{ Ċĉ ĉ block ( it ) Ċ ĉ } Ċ ĉ perm . req ( this ) Ċ } Ċ Ċ fun ĠFragment . need Perm ( p : ĠString , Ġblock : Ġ( Boolean ) Ġ-> ĠUnit ) Ġ{ Ċ ĉ val Ġperm Ġ= ĠP erm ( hash Set Of ( p )) Ċ ĉ perm . on Result Ġ= Ġ{ Ċĉ ĉ block ( it [ p ] Ġ?: Ġtrue ) Ċ ĉ } Ċ ĉ perm . req ( this ) Ċ } Ċ Ċ fun ĠFragment . need Perm ( p Set : ĠSet < String >, Ġblock : Ġ( Map < String , ĠBoolean >) Ġ-> ĠUnit ) Ġ{ Ċ ĉ val Ġperm Ġ= ĠP erm ( p Set . to HashSet ()) Ċ ĉ perm . on Result Ġ= Ġ{ Ċĉ ĉ block ( it ) Ċ ĉ } Ċ ĉ perm . req ( this ) Ċ }