package Ġcom . picker . file . source Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġcom . picker . file . Picker Result Ċ import Ġio . reactivex . subjects . Subject Ċ Ċ abstract Ġclass ĠBase File Picker Ġ: ĠFile Picker Ġ{ ĊĊĠĠĠ Ġprotected Ġvar Ġresult Subject : ĠSubject < Picker Result >? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġset Result Callback ( callback : ĠSubject < Picker Result > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Subject Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġrequest Permission ( picker Context : ĠAny , Ġrequest Code : ĠInt , Ġvar arg Ġpermission : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( picker Context Ġis ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( picker Context , Ġpermission , Ġrequest Code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( picker Context Ġis ĠFragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpicker Context . request Permissions ( permission , Ġrequest Code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IllegalArgumentException :: class ) ĊĠĠĠ Ġinternal Ġfun Ġcheck If Permission Granted ( picker Context : ĠAny , Ġpermission : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdetermine Context : ĠContext ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( picker Context Ġis ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetermine Context Ġ= Ġpicker Context ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( picker Context Ġis ĠFragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetermine Context Ġ= Ġpicker Context . context ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdetermine Context ?. let Ġ{ Ġsafe Context Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠActivity Compat . check Self Permission ( safe Context , Ġpermission ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Context Ġis Ġnot Ġdetermined ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġis Requested Permission Granted ( permissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array , Ġrequested Permission : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgrant Results [ permissions . indexOf ( requested Permission )] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }