package Ġfr . az hot . re ale state manager . utils Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment ĊĊ Ċ /** Ċ Ġ* ĠChecks Ġwhether Ġa Ġpermission Ġis Ġgranted Ġto Ġthe Ġapp . Ċ Ġ* Ċ Ġ* Ġ@ param Ġapp Compat Activity Ġthe Ġ[ AppCompatActivity ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġpermission Ġthe Ġ[ Manifest . permission ] Ġto Ġbe Ġrequested . Ċ Ġ* Ċ Ġ* Ġ@ return Ġtrue Ġif Ġpermission Ġis Ġgranted Ġand Ġfalse Ġotherwise . Ċ Ġ* Ċ Ġ*/ Ċ fun Ġcheck Permission ( app Compat Activity : ĠAppCompatActivity , Ġpermission : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġ( Context Compat . check Self Permission ( app Compat Activity , Ġpermission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ċ } Ċ Ċ /** Ċ Ġ* ĠChecks Ġwhether Ġa Ġpermission Ġis Ġgranted Ġto Ġthe Ġapp . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfragment Ġthe Ġ[ Fragment ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġpermission Ġthe Ġ[ Manifest . permission ] Ġto Ġbe Ġrequested . Ċ Ġ* Ċ Ġ* Ġ@ return Ġtrue Ġif Ġpermission Ġis Ġgranted Ġand Ġfalse Ġotherwise . Ċ Ġ* Ċ Ġ*/ Ċ fun Ġcheck Permission ( fragment : ĠFragment , Ġpermission : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġ( Context Compat . check Self Permission ( fragment . require Context (), Ġpermission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ċ } Ċ Ċ /** Ċ Ġ* ĠChecks Ġwhether Ġpermissions Ġare Ġgranted Ġto Ġthe Ġapp . Ċ Ġ* Ċ Ġ* Ġ@ param Ġcontext Ġthe Ġ[ Context ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġpermissions Ġthe Ġ[ Manifest . permission ] Ġarray Ġto Ġbe Ġrequested Ċ Ġ* Ċ Ġ* Ġ@ return Ġtrue Ġif Ġpermissions Ġare Ġgranted Ġand Ġfalse Ġotherwise . Ċ Ġ* Ċ Ġ*/ Ċ fun Ġcheck Permissions ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġpermissions : ĠArray < out ĠString > Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġfor Ġ( permission Ġin Ġpermissions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ /** Ċ Ġ* ĠChecks Ġwhether Ġan Ġarray Ġof Ġ[ Manifest . permission ] Ġare Ġgranted Ġto Ġthe Ġapp . Ċ Ġ* ĠThis Ġmethod Ġshould Ġbe Ġcalled Ġwithin Ġthe Ġ[ AppCompatActivity . on Request Permissions Result ] Ġor Ċ Ġ* Ġ[ Fragment . on Request Permissions Result ] Ġmethod . Ċ Ġ* Ċ Ġ* Ġ@ param Ġrequest Code To Match Ġthe Ġrequest Ġcode Ġto Ġbe Ġmatched . Ċ Ġ* Ġ@ param Ġrequest Code Ġthe Ġrequest Ġcode Ġreceived Ġfrom Ġon Request Permissions Result . Ċ Ġ* Ġ@ param Ġgrant Results Ġthe Ġresults Ġreceived Ġfrom Ġon Request Permissions Result . Ċ Ġ* Ċ Ġ* Ġ@ return Ġtrue Ġif Ġpermissions Ġare Ġgranted Ġand Ġfalse Ġotherwise . Ċ Ġ* Ċ Ġ*/ Ċ fun Ġcheck Permissions Granted ( ĊĠĠĠ Ġrequest Code To Match : ĠInt , ĊĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠ Ġgrant Results : ĠInt Array Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( request Code Ġ!= Ġrequest Code To Match ) Ġreturn Ġfalse ĊĠĠĠ Ġfor Ġ( result Ġin Ġgrant Results ) Ġif Ġ( result Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġreturn Ġfalse ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ /** Ċ Ġ* ĠPro mp ts Ġa Ġdialog Ġinv iting Ġthe Ġuser Ġto Ġprovide Ġthe Ġapp Ġwith Ġthe Ġspecified Ġpermission . Ċ Ġ* Ċ Ġ* Ġ@ param Ġapp Compat Activity Ġthe Ġ[ AppCompatActivity ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġrequest Code Ġspecific Ġrequest Ġcode Ġto Ġmatch Ġwith Ġthe Ġresult Ġreported Ġto Ġthe Ċ Ġ* ĠĠĠĠĠĠĠ Ġ[ AppCompatActivity . on Request Permissions Result ] Ġmethod . Ċ Ġ* Ġ@ param Ġpermission Ġthe Ġ[ Manifest . permission ] Ġto Ġbe Ġrequested Ċ Ġ* Ċ Ġ*/ Ċ fun Ġrequest Permission ( app Compat Activity : ĠAppCompatActivity , Ġrequest Code : ĠInt , Ġpermission : ĠString ) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Compat Activity . request Permissions ( array Of ( permission ), Ġrequest Code ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠPro mp ts Ġa Ġdialog Ġinv iting Ġthe Ġuser Ġto Ġprovide Ġthe Ġapp Ġwith Ġthe Ġspecified Ġpermission . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfragment Ġthe Ġ[ Fragment ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġrequest Code Ġspecific Ġrequest Ġcode Ġto Ġmatch Ġwith Ġthe Ġresult Ġreported Ġto Ġthe Ċ Ġ* ĠĠĠĠĠĠĠ Ġ[ Fragment . on Request Permissions Result ] Ġmethod . Ċ Ġ* Ġ@ param Ġpermission Ġthe Ġ[ Manifest . permission ] Ġto Ġbe Ġrequested Ċ Ġ* Ċ Ġ*/ Ċ fun Ġrequest Permission ( fragment : ĠFragment , Ġrequest Code : ĠInt , Ġpermission : ĠString ) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment . request Permissions ( array Of ( permission ), Ġrequest Code ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠPro mp ts Ġa Ġdialog Ġinv iting Ġthe Ġuser Ġto Ġprovide Ġthe Ġapp Ġwith Ġthe Ġspecified Ġpermissions . Ċ Ġ* Ċ Ġ* Ġ@ param Ġapp Compat Activity Ġthe Ġ[ AppCompatActivity ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġrequest Code Ġspecific Ġrequest Ġcode Ġto Ġmatch Ġwith Ġthe Ġresult Ġreported Ġto Ġthe Ċ Ġ* ĠĠĠĠĠĠĠ Ġ[ AppCompatActivity . on Request Permissions Result ] Ġmethod . Ċ Ġ* Ġ@ param Ġpermissions Ġthe Ġ[ Manifest . permission ] Ġarray Ġto Ġbe Ġrequested Ċ Ġ* Ċ Ġ*/ Ċ fun Ġrequest Permissions ( ĊĠĠĠ Ġapp Compat Activity : ĠAppCompatActivity , ĊĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠ Ġpermissions : ĠArray < out ĠString > Ċ ) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Compat Activity . request Permissions ( permissions , Ġrequest Code ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠPro mp ts Ġa Ġdialog Ġinv iting Ġthe Ġuser Ġto Ġprovide Ġthe Ġapp Ġwith Ġthe Ġspecified Ġpermissions . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfragment Ġthe Ġ[ Fragment ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġrequest Code Ġspecific Ġrequest Ġcode Ġto Ġmatch Ġwith Ġthe Ġresult Ġreported Ġto Ġthe Ċ Ġ* ĠĠĠĠĠĠĠ Ġ[ Fragment . on Request Permissions Result ] Ġmethod . Ċ Ġ* Ġ@ param Ġpermissions Ġthe Ġ[ Manifest . permission ] Ġarray Ġto Ġbe Ġrequested Ċ Ġ* Ċ Ġ*/ Ċ fun Ġrequest Permissions ( fragment : ĠFragment , Ġrequest Code : ĠInt , Ġpermissions : ĠArray < out ĠString >) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment . request Permissions ( permissions , Ġrequest Code ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠChecks Ġwhether Ġa Ġpermission Ġis Ġprovided Ġto Ġthe Ġapp Ġor Ġcalls Ġthe Ġ[ request Permission ] Ġmethod . Ċ Ġ* Ċ Ġ* Ġ@ param Ġapp Compat Activity Ġthe Ġ[ AppCompatActivity ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġrequest Code Ġspecific Ġrequest Ġcode Ġto Ġmatch Ġwith Ġthe Ġresult Ġreported Ġto Ġthe Ċ Ġ* ĠĠĠĠĠĠĠ Ġ[ AppCompatActivity . on Request Permissions Result ] Ġmethod . Ċ Ġ* Ġ@ param Ġpermission Ġthe Ġ[ Manifest . permission ] Ġto Ġbe Ġrequested Ċ Ġ* Ċ Ġ* Ġ@ return Ġtrue Ġif Ġpermission Ġis Ġalready Ġgranted Ġand Ġfalse Ġotherwise . Ċ Ġ* Ċ Ġ*/ Ċ fun Ġcheck And Request Permission ( ĊĠĠĠ Ġapp Compat Activity : ĠAppCompatActivity , ĊĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠ Ġpermission : ĠString Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( Context Compat . check Self Permission ( app Compat Activity , Ġpermission ) ĊĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Permission ( app Compat Activity , Ġrequest Code , Ġpermission ) ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠChecks Ġwhether Ġa Ġpermission Ġis Ġprovided Ġto Ġthe Ġapp Ġor Ġcalls Ġthe Ġ[ request Permission ] Ġmethod . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfragment Ġthe Ġ[ Fragment ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġrequest Code Ġspecific Ġrequest Ġcode Ġto Ġmatch Ġwith Ġthe Ġresult Ġreported Ġto Ġthe Ċ Ġ* ĠĠĠĠĠĠĠ Ġ[ Fragment . on Request Permissions Result ] Ġmethod . Ċ Ġ* Ġ@ param Ġpermission Ġthe Ġ[ Manifest . permission ] Ġto Ġbe Ġrequested Ċ Ġ* Ċ Ġ* Ġ@ return Ġtrue Ġif Ġpermission Ġis Ġalready Ġgranted Ġand Ġfalse Ġotherwise . Ċ Ġ* Ċ Ġ*/ Ċ fun Ġcheck And Request Permission ( ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠ Ġpermission : ĠString Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( Context Compat . check Self Permission ( fragment . require Context (), Ġpermission ) ĊĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Permission ( fragment , Ġrequest Code , Ġpermission ) ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠChecks Ġwhether Ġpermissions Ġare Ġprovided Ġto Ġthe Ġapp Ġor Ġcalls Ġthe Ġ[ request Permissions ] Ġmethod . Ċ Ġ* Ċ Ġ* Ġ@ param Ġapp Compat Activity Ġthe Ġ[ AppCompatActivity ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġrequest Code Ġspecific Ġrequest Ġcode Ġto Ġmatch Ġwith Ġthe Ġresult Ġreported Ġto Ġthe Ċ Ġ* ĠĠĠĠĠĠĠ Ġ[ AppCompatActivity . on Request Permissions Result ] Ġmethod . Ċ Ġ* Ġ@ param Ġpermissions Ġthe Ġ[ Manifest . permission ] Ġarray Ġto Ġbe Ġrequested Ċ Ġ* Ċ Ġ* Ġ@ return Ġtrue Ġif Ġpermission Ġis Ġalready Ġgranted Ġand Ġfalse Ġotherwise . Ċ Ġ* Ċ Ġ*/ Ċ fun Ġcheck And Request Permissions ( ĊĠĠĠ Ġapp Compat Activity : ĠAppCompatActivity , ĊĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠ Ġpermissions : ĠArray < out ĠString > Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġfor Ġ( permission Ġin Ġpermissions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( app Compat Activity , Ġpermission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission ( app Compat Activity , Ġrequest Code , Ġpermission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ /** Ċ Ġ* ĠChecks Ġwhether Ġpermissions Ġare Ġprovided Ġto Ġthe Ġapp Ġor Ġcalls Ġthe Ġ[ request Permissions ] Ġmethod . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfragment Ġthe Ġ[ Fragment ] Ġfrom Ġwhich Ġthis Ġmethod Ġis Ġcalled . Ċ Ġ* Ġ@ param Ġrequest Code Ġspecific Ġrequest Ġcode Ġto Ġmatch Ġwith Ġthe Ġresult Ġreported Ġto Ġthe Ċ Ġ* ĠĠĠĠĠĠĠ Ġ[ Fragment . on Request Permissions Result ] Ġmethod . Ċ Ġ* Ġ@ param Ġpermissions Ġthe Ġ[ Manifest . permission ] Ġarray Ġto Ġbe Ġrequested Ċ Ġ* Ċ Ġ* Ġ@ return Ġtrue Ġif Ġpermission Ġis Ġalready Ġgranted Ġand Ġfalse Ġotherwise . Ċ Ġ* Ċ Ġ*/ Ċ fun Ġcheck And Request Permissions ( ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠ Ġpermissions : ĠArray < out ĠString > Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġfor Ġ( permission Ġin Ġpermissions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( fragment . require Context (), Ġpermission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission ( fragment , Ġrequest Code , Ġpermission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue Ċ }