package Ġyet . ext Ċ Ċ import Ġandroid . content . Content U ris Ċ import Ġandroid . net . Uri Ċ import Ġandroid . webkit . MimeType Map Ċ import Ġyet . util . app . App Ċ import Ġyet . util . app . Media Info Ċ import Ġjava . io .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġent ao yang @ 1 6 3 . com Ġon Ġ 2 0 1 7 - 0 3 - 1 9 . Ċ Ġ*/ ĊĊ Ċ val ĠFile . uri : ĠUri Ġget () Ġ= ĠUri . from File ( this ) Ċ fun ĠUri . open InputStream (): ĠInputStream Ġ{ Ċ ĉ if Ġ( this . scheme Ġ== Ġ" content ") Ġ{ Ċĉ ĉ return ĠApp . content Resolver . open InputStream ( this ) Ċ ĉ } Ċ ĉ return ĠFileInputStream ( this . path ) Ċ } Ċ fun ĠUri . append Id ( id : ĠLong ): ĠUri Ġ{ Ċ ĉ return ĠContent U ris . with App ended Id ( this , Ġid ) Ċ } Ċ Ċ fun ĠUri . append Path ( path Segment : ĠString ): ĠUri Ġ{ Ċ ĉ return ĠUri . with App ended Path ( this , ĠUri . encode ( path Segment )) Ċ } Ċ Ċ fun ĠUri . append Param ( key : ĠString , Ġvalue : ĠString ): ĠUri Ġ{ Ċ ĉ return Ġthis . build Up on (). append QueryParameter ( key , Ġvalue ). build () Ċ } Ċ Ċ fun ĠUri . parse Id (): ĠLong Ġ{ Ċ ĉ return ĠContent U ris . parse Id ( this ) Ċ } ĊĊ Ċ val ĠUri . mime Type : ĠString ? Ġget () Ġ{ Ċ ĉ return ĠMime Of ( this ) Ċ } Ċ val ĠUri . fileName : ĠString ? Ġget () Ġ{ Ċ ĉ return ĠFileName Of ( this ) Ċ } Ċ val ĠUri . ext Name : ĠString ? Ġget () Ġ{ Ċ ĉ val Ġs Ġ= Ġthis . fileName Ċ ĉ if Ġ( s Ġ!= Ġnull ) Ġ{ Ċĉ ĉ val Ġext Ġ= Ġs . substring After Last ('.', Ġ"") Ċĉ ĉ if Ġ( ext . isNotEmpty ()) Ġ{ Ċĉĉ ĉ return Ġext Ċĉ ĉ } Ċ ĉ } Ċ ĉ return Ġnull Ċ } ĊĊĊ Ċ fun ĠMime Of ( uri : ĠUri ): ĠString ? Ġ{ Ċ ĉ if Ġ( uri . scheme Ġ== Ġ" content ") Ġ{ Ċĉ ĉ if Ġ( uri . host Ġ== Ġ" media ") Ġ{ Ċĉĉ ĉ return ĠMedia Info ( uri ). mime Type Ċĉ ĉ } Ċ ĉ } Ċ ĉ val Ġfilename Ġ= Ġuri . last Path Segment Ċ ĉ val Ġn Ġ= Ġfilename . lastIndexOf ('.') Ċ ĉ if Ġ( n Ġ> Ġ 0 ) Ġ{ Ċĉ ĉ val Ġext Ġ= Ġfilename . substring ( n Ġ+ Ġ 1 ) Ċĉ ĉ if Ġ( ext . isNotEmpty ()) Ġ{ Ċĉĉ ĉ return ĠMime TypeMap . get Singleton (). get MimeType From Extension ( ext ) Ċĉ ĉ } Ċ ĉ } Ċ ĉ return Ġnull Ċ } Ċ Ċ fun ĠFileName Of ( uri : ĠUri ): ĠString ? Ġ{ Ċ ĉ if Ġ( uri . scheme Ġ== Ġ" content ") Ġ{ Ċĉ ĉ if Ġ( uri . host Ġ== Ġ" media ") Ġ{ Ċĉĉ ĉ return ĠMedia Info ( uri ). displayName Ċĉ ĉ } Ċ ĉ } Ċ ĉ return Ġuri . last Path Segment Ċ }