package Ġcom . lass i . app Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . view . View Ċ import Ġandroid . webkit . MimeType Map Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . File Provider Ċ import Ġandroidx . core . view . isVisible Ċ import Ġcom . lass i . app . adapter . Selected Media Adapter Ċ import Ġcom . lass i . common . utils . Key Utils Ċ import Ġcom . lass i . data . media . Mi Media Ċ import Ġcom . lass i . domain . media . L ass i Option Ċ import Ġcom . lass i . domain . media . MediaType Ċ import Ġcom . lass i . presentation . builder . L ass i Ċ import Ġcom . lass i . presentation . common . decoration . Grid Spacing Item Decoration Ċ import Ġcom . lass i . presentation . crop per . Crop ImageView Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġselected Media Adapter Ġby Ġlazy Ġ{ ĠSelected Media Adapter ( this :: on Item Clicked ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġbtn Image Picker . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn Video Picker . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn Audio Picker . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbtn Doc Picker . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġrv Selected Media . adapter Ġ= Ġselected Media Adapter ĊĠĠĠĠĠĠĠ Ġrv Selected Media . addItem Decoration ( Grid Spacing Item Decoration ( 2 , Ġ 1 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn Image Picker Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠL ass i ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( L ass i Option . CAMERA _ AND _ G ALL ERY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMax Count ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Grid Size ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Place Holder ( R . drawable . ic _ image _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setError Drawable ( R . drawable . ic _ image _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setSelection Drawable ( R . drawable . ic _ checked _ media ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStatus Bar Color ( R . color . color Primary Dark ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Color ( R . color . color Primary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Resource Color ( android . R . color . white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ProgressBar Color ( R . color . color Accent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Crop Type ( Crop ImageView . Crop Shape . O VAL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Crop AspectRatio ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Compression R ation ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Min FileSize ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMax FileSize ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Actual Circle Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Supported File Types (" jpg ", Ġ" jpeg ", Ġ" png ", Ġ" webp ", Ġ" gif ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Flip () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Rotate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceive Data . launch ( intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn Video Picker Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠL ass i ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( L ass i Option . CAMERA _ AND _ G ALL ERY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMax Count ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Grid Size ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Min Time ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMax Time ( 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Min FileSize ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMax FileSize ( 2 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set MediaType ( MediaType . VIDEO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStatus Bar Color ( R . color . color Primary Dark ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Color ( R . color . color Primary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Resource Color ( android . R . color . white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ProgressBar Color ( R . color . color Accent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Place Holder ( R . drawable . ic _ video _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setError Drawable ( R . drawable . ic _ video _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setSelection Drawable ( R . drawable . ic _ checked _ media ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Supported File Types (" mp 4 ", Ġ" mk v ", Ġ" web m ", Ġ" avi ", Ġ" fl v ", Ġ" 3 gp ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceive Data . launch ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn Audio Picker Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠL ass i ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set MediaType ( MediaType . AUDIO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMax Count ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Grid Size ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Place Holder ( R . drawable . ic _ audio _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setError Drawable ( R . drawable . ic _ audio _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setSelection Drawable ( R . drawable . ic _ checked _ media ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStatus Bar Color ( R . color . color Primary Dark ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Color ( R . color . color Primary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Resource Color ( android . R . color . white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ProgressBar Color ( R . color . color Accent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceive Data . launch ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn Doc Picker Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission For Document () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlaunch Doc Picker () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠL ass i ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set MediaType ( MediaType . DOC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMax Count ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Grid Size ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Place Holder ( R . drawable . ic _ document _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setError Drawable ( R . drawable . ic _ document _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setSelection Drawable ( R . drawable . ic _ checked _ media ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStatus Bar Color ( R . color . color Primary Dark ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Color ( R . color . color Primary ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Resource Color ( android . R . color . white ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Supported File Types ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pdf ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" od t ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" doc ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" docs ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" docx ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" txt ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ppt ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ppt x ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" rtf ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" xlsx ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" xls " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ProgressBar Color ( R . color . color Accent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġreceive Data . launch ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġreceive Data Ġ= ĊĠĠĠĠĠĠĠ Ġregister For Activity Result ( Activity Result Contracts . Start Activity For Result ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Media Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . data ?. get Serializable Extra ( Key Utils . SELECTED _ MEDIA ) Ġas ĠArrayList < Mi Media > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selected Media . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Empty . isVisible Ġ= Ġselected Media . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Media Adapter . set List ( selected Media ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget MimeType ( uri : ĠUri ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Content Resolver . SCHEME _ CONTENT Ġ== Ġuri . scheme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Resolver . getType ( uri ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Extension Ġ= ĠMime TypeMap . getFile Extension From Url ( uri . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMime TypeMap . get Singleton () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get MimeType From Extension ( file Extension . lowercase ( Locale . getDefault ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Item Clicked ( mi Media : ĠMi Media ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmi Media . path ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mi Media . does Uri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . setData And Type ( uri , Ġget MimeType ( uri )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Uri Ġ= ĠFile Provider . get Uri For File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . packageName Ġ+ Ġ". file provider ", Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . setData And Type ( file Uri , Ġget MimeType ( file Uri )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ GRANT _ READ _ URI _ PERMISSION ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent . create Chooser ( intent , Ġ" Open Ġfile ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠĠ ĠIf ĠAndroid Ġdevice ĠSDK Ġis Ġ>= Ġ 3 0 Ġand Ġwants Ġto Ġaccess Ġdocument Ġ( only Ġfor Ġchoose Ġthe Ġnon Ġmedia Ġfile ) ĊĠĠĠĠ Ġ* ĠĠ Ġthen Ġask Ġfor Ġ" android . permission . MANAGE _ EXTERNAL _ STORAGE " Ġpermission ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrequest Permission For Document () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . R Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Environment . is External Storage Manager ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Doc Picker () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Settings . ACTION _ MANAGE _ APP _ ALL _ FILES _ ACCESS _ PERMISSION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Category (" android . intent . category . DEFAULT ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format (" package :% s ", Ġapplication Context ?. packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Permission Setting Result . launch ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠSettings . ACTION _ MANAGE _ ALL _ FILES _ ACCESS _ PERMISSION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Permission Setting Result . launch ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Doc Picker () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Permission Setting Result Ġ= ĊĠĠĠĠĠĠĠ Ġregister For Activity Result ( Activity Result Contracts . Start Activity For Result ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission For Document () ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ