/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . ĠD y lan ĠC ai Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ @ file : Suppress (" unused ") Ċ Ċ package Ġcom . dy l anc . long an Ċ Ċ import Ġandroid . app . Recover able Security Exception Ċ import Ġandroid . content . Content U ris Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Cancellation Signal Ċ import Ġandroid . os . Parcel FileDescriptor Ċ import Ġandroid . provider . Base Columns Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Size Ċ import Ġandroid . webkit . MimeType Map Ċ import Ġandroidx . activity . result . Activity Result Launcher Ċ import Ġandroidx . activity . result . Intent Sender Request Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . core . content . File Provider Ċ import Ġjava . io . File Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream ĊĊ Ċ late init Ġvar Ġfile Provider Authority : ĠString Ċ Ċ inline Ġval ĠEXTER NAL _ MEDIA _ I MAGES _ URI : ĠUri ĊĠ Ġget () Ġ= ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI Ċ Ċ inline Ġval ĠEXTER NAL _ MEDIA _ VIDEO _ URI : ĠUri ĊĠ Ġget () Ġ= ĠMedia Store . Video . Media . EXTERNAL _ CONTENT _ URI Ċ Ċ inline Ġval ĠEXTER NAL _ MEDIA _ AUDIO _ URI : ĠUri ĊĠ Ġget () Ġ= ĠMedia Store . Audio . Media . EXTERNAL _ CONTENT _ URI Ċ Ċ @ get : Requires Api ( Build . VERSION _ CODES . Q ) Ċ inline Ġval ĠEXTER NAL _ MEDIA _ DOWNLOAD S _ URI : ĠUri ĊĠ Ġget () Ġ= ĠMedia Store . Downloads . EXTERNAL _ CONTENT _ URI Ċ Ċ fun ĠFile . to Uri ( authority : ĠString Ġ= Ġfile Provider Authority ): ĠUri Ġ= ĊĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠ ĠFile Provider . get Uri For File ( application , Ġauthority , Ġthis ) ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ ĠUri . from File ( this ) ĊĠ Ġ} Ċ Ċ inline Ġfun ĠUri . update ( cross inline Ġblock : ĠContent Values . () Ġ-> ĠUnit ): ĠBoolean Ġ= ĊĠ Ġcontent Resolver . update ( ĊĠĠĠ Ġthis , Ġ"${ Base Columns ._ ID } Ġ= Ġ?", ĊĠĠĠ ĠarrayOf ( Content U ris . parse Id ( this ). toString ()), Ġblock ĊĠ Ġ) Ġ> Ġ 0 Ċ Ċ @ Experimental Api Ċ fun ĠUri . delete ( launcher : ĠActivity Result Launcher < Intent Sender Request >): ĠBoolean Ġ= ĊĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( Media Store . Media Columns . DATA ) ĊĠĠĠ Ġcontent Resolver . query First ( this , Ġprojection ) Ġ{ Ġcursor Ġ-> ĊĠĠĠĠĠ ĠFile ( cursor . getString ( cursor . getColumnIndex ( Media Store . Media Columns . DATA ))). delete () ĊĠĠĠ Ġ} Ġ?: Ġfalse ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġid : ĠLong Ġ= ĠContent U ris . parse Id ( this ) ĊĠĠĠĠĠ Ġcontent Resolver . delete ( this , Ġ"${ Base Columns ._ ID } Ġ= Ġ?", ĠarrayOf ( id . toString ())) Ġ> Ġ 0 ĊĠĠĠ Ġ} Ġcatch Ġ( security Exception : ĠSecurity Exception ) Ġ{ ĊĠĠĠĠĠ Ġval Ġrecover able Security Exception Ġ= Ġsecurity Exception Ġas ? ĠRe cover able Security Exception ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException ( security Exception . message , Ġsecurity Exception ) ĊĠĠĠĠĠ Ġval Ġintent Sender Ġ= ĊĠĠĠĠĠĠĠ Ġrecover able Security Exception . user Action . action Intent . intent Sender ĊĠĠĠĠĠ Ġlauncher . launch ( Intent Sender Request . Builder ( intent Sender ). build ()) ĊĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ inline Ġfun Ġ< R > ĠUri . open FileDescriptor ( mode : ĠString Ġ= Ġ" r ", Ġcross inline Ġblock : Ġ( Parcel FileDescriptor ) Ġ-> ĠR ): ĠR ? Ġ= ĊĠ Ġcontent Resolver . open FileDescriptor ( this , Ġmode )?. use ( block ) Ċ Ċ inline Ġfun Ġ< R > ĠUri . open InputStream ( cross inline Ġblock : Ġ( InputStream ) Ġ-> ĠR ): ĠR ? Ġ= ĊĠ Ġcontent Resolver . open InputStream ( this )?. use ( block ) Ċ Ċ inline Ġfun Ġ< R > ĠUri . open OutputStream ( cross inline Ġblock : Ġ( OutputStream ) Ġ-> ĠR ): ĠR ? Ġ= ĊĠ Ġcontent Resolver . open OutputStream ( this )?. use ( block ) Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . Q ) Ċ fun ĠUri . load Thumbnail ( width : ĠInt , Ġheight : ĠInt , Ġsignal : ĠC ancellation Signal ? Ġ= Ġnull ): ĠBitmap Ġ= ĊĠ Ġcontent Resolver . load Thumbnail ( this , ĠSize ( width , Ġheight ), Ġsignal ) Ċ Ċ inline Ġval ĠUri . file Extension : ĠString ? ĊĠ Ġget () Ġ= ĠMime TypeMap . get Singleton (). getExtension From MimeType ( mime Type ) Ċ Ċ inline Ġval ĠUri . mime Type : ĠString ? ĊĠ Ġget () Ġ= Ġcontent Resolver . getType ( this ) Ċ