package Ġcom . example . shop assistant . common Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . content . Content U ris Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . database . Database Utils Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Environment Ċ import Ġandroid . provider . Documents Contract Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit . MimeType Map Ċ import Ġjava . io . File ĊĊ Ċ /** Ċ Ġ* Ġ@ author ĠP eli Ċ Ġ* Ġ@ author Ġpa ul bur ke Ġ( ipa ul pro ) Ċ Ġ* Ġ@ version Ġ 2 0 1 3 - 1 2 - 1 1 Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* Ġ@ author ĠP eli Ċ Ġ* Ġ@ author Ġpa ul bur ke Ġ( ipa ul pro ) Ċ Ġ* Ġ@ version Ġ 2 0 1 3 - 1 2 - 1 1 Ċ Ġ*/ Ċ /** Ċ Ġ* Ġ@ edited Ġby ĠJ ak ub ĠK u Äį era Ġ( Simp lex ĠWeb ĠSolutions Ġs . r . o .) Ċ Ġ* Ġ@ website Ġhttp :// simp lex . ws Ċ Ġ* Ġ@ version Ġ 1 8 - 0 1 - 2 0 1 6 Ċ Ġ*/ Ċ object ĠFileUtils Ġ{ ĊĠĠĠ Ġconst Ġval ĠAUTH ORITY Ġ= Ġ" com . ian h ann ib all ake . local storage . documents " ĊĠĠĠ Ġconst Ġval ĠMIME _ TYPE _ AUDIO Ġ= Ġ" audio /* " ĊĠĠĠ Ġconst Ġval ĠMIME _ TYPE _ TEXT Ġ= Ġ" text /* " ĊĠĠĠ Ġconst Ġval ĠMIME _ TYPE _ IMAGE Ġ= Ġ" image /* " ĊĠĠĠ Ġconst Ġval ĠMIME _ TYPE _ VIDEO Ġ= Ġ" video /* " ĊĠĠĠ Ġconst Ġval ĠMIME _ TYPE _ APP Ġ= Ġ" application /* " ĊĠĠĠ Ġconst Ġval ĠHID DEN _ PREFIX Ġ= Ġ"." ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTAG Ġfor Ġlog Ġmessages . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" FileUtils " ĊĠĠĠ Ġprivate Ġconst Ġval ĠDEBUG Ġ= Ġfalse Ġ// ĠSet Ġto Ġtrue Ġto Ġenable Ġlogging ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġextension Ġof Ġa Ġfile Ġname , Ġlike Ġ". png " Ġor Ġ". jpg ". ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠExtension Ġincluding Ġthe Ġdot (" ."); Ġ"" Ġif Ġthere Ġis Ġno Ġextension ; ĊĠĠĠĠ Ġ* Ġnull Ġif Ġuri Ġwas Ġnull . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Extension ( uri : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdot Ġ= Ġuri . lastIndexOf (".") ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( dot Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri . substring ( dot ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNo Ġextension . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġif ĠUri Ġis Ġa ĠMedia Store ĠUri . ĊĠĠĠĠ Ġ* Ġ@ author Ġpa ul bur ke ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Media Uri ( uri : ĠUri ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" media ". equals ( uri !!. authority , Ġignore Case Ġ= Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe ĠMIME Ġtype Ġfor Ġthe Ġgiven Ġfile . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget MimeType ( file : ĠFile ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġget Extension ( file . name ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( extension !!. length Ġ> Ġ 0 ) ĠMime TypeMap . get Singleton (). get MimeType From Extension ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension . substring ( 1 ) ĊĠĠĠĠĠĠĠ Ġ) Ġelse Ġ" application / octet - stream " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe ĠMIME Ġtype Ġfor Ġthe Ġgive ĠUri . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget MimeType ( context : ĠContext , Ġuri : ĠUri ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( getPath ( context , Ġuri )) ĊĠĠĠĠĠĠĠ Ġreturn Ġget MimeType ( file ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĠThe ĠUri Ġto Ġcheck . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠWhether Ġthe ĠUri Ġauthority Ġis Ġ{ AUTH ORITY }. ĊĠĠĠĠ Ġ* Ġ@ author Ġpa ul bur ke ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis LocalStorage Document ( uri : ĠUri ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAUTH ORITY Ġ== Ġuri . authority ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĠThe ĠUri Ġto Ġcheck . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠWhether Ġthe ĠUri Ġauthority Ġis ĠExternal Storage Provider . ĊĠĠĠĠ Ġ* Ġ@ author Ġpa ul bur ke ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis External Storage Document ( uri : ĠUri ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" com . android . external storage . documents " Ġ== Ġuri . authority ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĠThe ĠUri Ġto Ġcheck . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠWhether Ġthe ĠUri Ġauthority Ġis ĠDown loads Provider . ĊĠĠĠĠ Ġ* Ġ@ author Ġpa ul bur ke ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Downloads Document ( uri : ĠUri ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" com . android . providers . downloads . documents " Ġ== Ġuri . authority ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĠThe ĠUri Ġto Ġcheck . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠWhether Ġthe ĠUri Ġauthority Ġis ĠMedia Provider . ĊĠĠĠĠ Ġ* Ġ@ author Ġpa ul bur ke ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Media Document ( uri : ĠUri ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" com . android . providers . media . documents " Ġ== Ġuri . authority ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĠThe ĠUri Ġto Ġcheck . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠWhether Ġthe ĠUri Ġauthority Ġis ĠGoogle ĠPh otos . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Google Photos Uri ( uri : ĠUri ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" com . google . android . apps . photos . content " Ġ== Ġuri . authority ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġvalue Ġof Ġthe Ġdata Ġcolumn Ġfor Ġthis ĠUri . ĠThis Ġis Ġuseful Ġfor ĊĠĠĠĠ Ġ* ĠMedia Store ĠU ris , Ġand Ġother Ġfile - based ĠContent Providers . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠĠĠĠĠĠ ĠThe Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĠĠĠĠĠĠĠĠĠĠ ĠThe ĠUri Ġto Ġquery . ĊĠĠĠĠ Ġ* Ġ@ param Ġselection ĠĠĠĠ Ġ( Optional ) ĠFilter Ġused Ġin Ġthe Ġquery . ĊĠĠĠĠ Ġ* Ġ@ param Ġselection Args Ġ( Optional ) ĠSelection Ġarguments Ġused Ġin Ġthe Ġquery . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġvalue Ġof Ġthe Ġ_ data Ġcolumn , Ġwhich Ġis Ġtypically Ġa Ġfile Ġpath . ĊĠĠĠĠ Ġ* Ġ@ author Ġpa ul bur ke ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetData Column ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġuri : ĠUri ?, Ġselection : ĠString ?, ĊĠĠĠĠĠĠĠ Ġselection Args : ĠArray < String >? ĊĠĠĠ Ġ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Ġ= Ġ"_ data " ĊĠĠĠĠĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġcontext . content Resolver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri !! , Ġprojection , Ġselection , Ġselection Args , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull Ġ&& Ġcursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( DEBUG ) ĠDatabase Utils . dump Cursor ( cursor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn _ index Ġ= Ġcursor . getColumnIndex OrThrow ( column ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcursor . getString ( column _ index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġfile Ġpath Ġfrom Ġa ĠUri . ĠThis Ġwill Ġget Ġthe Ġthe Ġpath Ġfor ĠStorage ĠAccess ĊĠĠĠĠ Ġ* ĠFramework ĠDocuments , Ġas Ġwell Ġas Ġthe Ġ_ data Ġfield Ġfor Ġthe ĠMedia Store Ġand ĊĠĠĠĠ Ġ* Ġother Ġfile - based ĠContent Providers .< br ></ br > ĊĠĠĠĠ Ġ* Ġ< br ></ br > ĊĠĠĠĠ Ġ* ĠCall ers Ġshould Ġcheck Ġwhether Ġthe Ġpath Ġis Ġlocal Ġbefore Ġassuming Ġit ĊĠĠĠĠ Ġ* Ġrepresents Ġa Ġlocal Ġfile . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠThe Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĠĠĠĠ ĠThe ĠUri Ġto Ġquery . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ author Ġpa ul bur ke ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . KIT K AT ) ĊĠĠĠ Ġfun ĠgetPath ( context : ĠContext , Ġuri : ĠUri ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( DEBUG ) ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG Ġ+ Ġ" ĠFile Ġ- ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Authority : Ġ" Ġ+ Ġuri . authority Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", ĠFragment : Ġ" Ġ+ Ġuri . fragment Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", ĠPort : Ġ" Ġ+ Ġuri . port Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", ĠQuery : Ġ" Ġ+ Ġuri . query Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", ĠScheme : Ġ" Ġ+ Ġuri . scheme Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", ĠHost : Ġ" Ġ+ Ġuri . host Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", ĠSe gments : Ġ" Ġ+ Ġuri . path Segments . toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġis Kit K at Ġ= ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ĊĊĠĠĠĠĠĠĠ Ġ// ĠDocument Provider ĊĠĠĠĠĠĠĠ Ġif Ġ( is Kit K at Ġ&& ĠDocuments Contract . is Document Uri ( context , Ġuri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLocal Storage Provider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is LocalStorage Document ( uri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġpath Ġis Ġthe Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDocuments Contract . getDocument Id ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is External Storage Document ( uri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Id Ġ= ĠDocuments Contract . getDocument Id ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsplit Ġ= Ġdoc Id . split (": "). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġsplit [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" primary ". equals ( type , Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEnvironment . get External Storage Directory (). toString () Ġ+ Ġ"/" Ġ+ Ġsplit [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġhandle Ġnon - primary Ġvolumes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Downloads Document ( uri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠDocuments Contract . getDocument Id ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Uri Ġ= ĠContent U ris . with App ended Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse (" content :// downloads / public _ downloads "), Ġjava . lang . Long . valueOf ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠgetData Column ( context , Ġcontent Uri , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Media Document ( uri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Id Ġ= ĠDocuments Contract . getDocument Id ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsplit Ġ= Ġdoc Id . split (": "). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġsplit [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontent Uri : ĠUri ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" image " Ġ== Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri Ġ= ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(" video " Ġ== Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri Ġ= ĠMedia Store . Video . Media . EXTERNAL _ CONTENT _ URI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(" audio " Ġ== Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri Ġ= ĠMedia Store . Audio . Media . EXTERNAL _ CONTENT _ URI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġ"_ id = ?" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsplit [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠgetData Column ( context , Ġcontent Uri , Ġselection , Ġselection Args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(" content ". equals ( uri . scheme , Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturn Ġthe Ġremote Ġaddress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Google Photos Uri ( uri )) Ġuri . last Path Segment Ġelse ĠgetData Column ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(" file ". equals ( uri . scheme , Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġuri . path ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAttempt Ġto Ġretrieve Ġthe Ġthumbnail Ġof Ġgiven ĠUri Ġfrom Ġthe ĠMedia Store . ĠThis ĊĠĠĠĠ Ġ* Ġshould Ġnot Ġbe Ġcalled Ġon Ġthe ĠUI Ġthread . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĊĠĠĠĠ Ġ* Ġ@ param ĠmimeType ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ* Ġ@ author Ġpa ul bur ke ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Thumbnail ( context : ĠContext , Ġuri : ĠUri ?, ĠmimeType : ĠString ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( DEBUG ) ĠLog . d ( TAG , Ġ" At tempting Ġto Ġget Ġthumbnail ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Media Uri ( uri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" You Ġcan Ġonly Ġretrieve Ġthumb nails Ġfor Ġimages Ġand Ġvideos .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġbm : ĠBitmap ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolver Ġ= Ġcontext . content Resolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġresolver . query ( uri , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor !!. moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getInt ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( DEBUG ) ĠLog . d ( TAG , Ġ" Got Ġthumb ĠID : Ġ$ id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mime Type . contains (" video ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbm Ġ= ĠMedia Store . Video . Thumb nails . get Thumbnail ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid . to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Thumb nails . MIN I _ KIND , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( mime Type . contains ( MIME _ TYPE _ IMAGE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbm Ġ= ĠMedia Store . Images . Thumb nails . get Thumbnail ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid . to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Thumb nails . MIN I _ KIND , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( DEBUG ) ĠLog . e ( TAG , Ġ" get Thumbnail ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbm ĊĠĠĠ Ġ} Ċ }