package Ġcom . applic aster . plugin . x ray . storage s . helpers Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ Ċ class ĠFile Picker Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġpick File ( activity : ĠFragment Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠString Ġ= Ġ"* /* "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchoose File Ġ= ĠIntent ( Intent . ACTION _ GET _ CONTENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchoose File . add Category ( Intent . CATEGORY _ OP ENABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchoose File . type Ġ= Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . startActivity From Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . create Chooser ( choose File , Ġ" Choose Ġa Ġfile "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP ICK _ FILE _ REQUEST _ CODE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Pick ed ( request Code : ĠInt , ĠresultCode : ĠInt ) Ġ= ĠP ICK _ FILE _ REQUEST _ CODE Ġ== Ġrequest Code Ġ&& ĠActivity . RESULT _ OK Ġ== ĠresultCode ĊĊĠĠĠĠĠĠĠ Ġfun ĠreadFile ( context : ĠContext , Ġdata : ĠIntent ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġdata . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Intent Ġdata Ġurl Ġis Ġmissing ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . open InputStream ( data . data !! ) !!. use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit . reader (). read Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP ICK _ FILE _ REQUEST _ CODE Ġ= Ġ 1 0 1 0 1 ĊĠĠĠ Ġ} Ċ } Ċ