package Ġme . ad swt 5 1 8 . tod olist . debug Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġme . ad swt 5 1 8 . tod olist . R Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ Ċ class ĠDebug Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠREQUEST _ CODE _ STORAGE _ PERMISSION Ġ= Ġ 1 0 0 1 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ debug ) ĊĠĠĠĠĠĠĠ ĠsetTitle ( R . string . action _ debug ) ĊĠĠĠĠĠĠĠ Ġval Ġprint Btn : ĠButton Ġ= ĠfindViewById ( R . id . btn _ print _ path ) ĊĠĠĠĠĠĠĠ Ġval Ġpath Text : ĠTextView Ġ= ĠfindViewById ( R . id . text _ path ) ĊĠĠĠĠĠĠĠ Ġprint Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" ===== ĠInternal ĠPrivate Ġ===== \ n "). append ( get Internal Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ===== ĠExternal ĠPrivate Ġ===== \ n "). append ( get External Private Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ===== ĠExternal ĠPublic Ġ===== \ n "). append ( get External Public Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Text . text Ġ= Ġsb ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpermission Btn : ĠButton Ġ= ĠfindViewById ( R . id . btn _ request _ permission ) ĊĠĠĠĠĠĠĠ Ġpermission Btn . setOnClickListener ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate : ĠInt Ġ= ĠActivity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Debug Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Debug Activity , Ġ" already Ġgranted ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ OnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Debug Activity , ĠarrayOf ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ CODE _ STORAGE _ PERMISSION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , Ġ@ NonNull Ġpermissions : ĠArray < String ? >, ĊĠĠĠĠĠĠĠ Ġ@ NonNull Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġif Ġ( permissions . isEmpty () Ġ|| Ġgrant Results . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ CODE _ STORAGE _ PERMISSION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġgrant Results [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Debug Activity , Ġ" permission Ġgranted ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( state Ġ== ĠPackage Manager . PERMISSION _ DEN IED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Debug Activity , Ġ" permission Ġdenied ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Internal Path (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Map : ĠMutable Map < String , ĠFile > Ġ= Ġjava . util . Linked HashMap () ĊĠĠĠĠĠĠĠ Ġdir Map [" cacheDir "] Ġ= Ġcache Dir ĊĠĠĠĠĠĠĠ Ġdir Map [" files Dir "] Ġ= Ġfiles Dir ĊĠĠĠĠĠĠĠ Ġdir Map [" custom Dir "] Ġ= Ġget Dir (" custom ", ĠMODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Canonical Path ( dir Map ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget External Private Path (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Map : ĠMutable Map < String , ĠFile ?> Ġ= Ġjava . util . Linked HashMap () ĊĠĠĠĠĠĠĠ Ġdir Map [" cacheDir "] Ġ= Ġexternal Cache Dir ĊĠĠĠĠĠĠĠ Ġdir Map [" files Dir "] Ġ= Ġget External Files Dir ( null ) ĊĠĠĠĠĠĠĠ Ġdir Map [" pictures Dir "] Ġ= Ġget External Files Dir ( Environment . DIRECTORY _ PI CTURE S ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Canonical Path ( dir Map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget External Public Path (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Map : ĠMutable Map < String , ĠFile > Ġ= ĠLinkedHashMap () ĊĠĠĠĠĠĠĠ Ġdir Map [" rootDir "] Ġ= ĠEnvironment . get External Storage Directory () ĊĠĠĠĠĠĠĠ Ġdir Map [" pictures Dir "] Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnvironment . get External Storage Public Directory ( Environment . DIRECTORY _ PI CTURE S ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Canonical Path ( dir Map ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Canonical Path ( dir Map : ĠMap < String , ĠFile ?> ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( name Ġin Ġdir Map . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (": Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( dir Map [ name ] !!. canonical Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠ Ġ} Ċ }