package Ġcom . me e . utils Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Base Columns Ċ import Ġandroid . provider . Documents Contract Ċ import Ġjava . io . File Ċ // Ċ // enum Ġclass ĠUri Load able Ġ{ Ċ // ĠĠĠ ĠYES , ĠNO , ĠMAY BE Ċ //} Ċ // Ċ // fun Ġis Load able ( uri : ĠUri , Ġgranted : ĠList < Uri >): ĠUri Load able Ġ{ Ċ // Ċ // ĠĠĠ Ġreturn Ġwhen ( uri . scheme ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġ" content " Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Documents Contract . is Document Uri ( this , Ġuri )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( document Uri Exists ( uri ) Ġ&& Ġgranted . contains ( uri )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri Load able . YES Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri Load able . NO Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ// ĠContent ĠURI Ġis Ġnot Ġfrom Ġa Ġdocument Ġprovider Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( content Uri Exists ( uri )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri Load able . YES Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri Load able . NO Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ" file " Ġ-> Ġif Ġ( File ( uri . path ). exists ()) ĠUri Load able . YES Ġelse ĠUri Load able . NO Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// Ġhttp , Ġhttps , Ġetc . ĠNo Ġin ex pensive Ġway Ġto Ġtest Ġexistence . Ċ // ĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUri Load able . MAYBE Ċ // ĠĠĠ Ġ} Ċ //} Ċ // Ċ //// ĠAll ĠDocument Providers Ġshould Ġsupport Ġthe ĠCOLUMN _ DOCUMENT _ ID Ġcolumn Ċ // fun Ġdocument Uri Exists ( uri : ĠUri ): ĠBoolean Ġ= Ċ // ĠĠĠ Ġresolve Uri ( uri , ĠDocuments Contract . Document . COLUMN _ DOCUMENT _ ID ) Ċ // Ċ //// ĠAll ĠContent Providers Ġshould Ġsupport Ġthe ĠBase Columns ._ ID Ġcolumn Ċ // fun Ġcontent Uri Exists ( uri : ĠUri ): ĠBoolean Ġ= Ċ // ĠĠĠ Ġresolve Uri ( uri , ĠBase Columns ._ ID ) Ċ // Ċ // fun Ġresolve Uri ( uri : ĠUri , Ġcolumn : ĠString ): ĠBoolean Ġ{ Ċ // Ċ // ĠĠĠ Ġval Ġcursor Ġ= Ġcontent Resolver . query ( uri , Ċ // ĠĠĠĠĠĠĠ ĠarrayOf ( column ), Ġ// ĠEmpty Ġprojection s Ġare Ġbad Ġfor Ġperformance Ċ // ĠĠĠĠĠĠĠ Ġnull , Ċ // ĠĠĠĠĠĠĠ Ġnull , Ċ // ĠĠĠĠĠĠĠ Ġnull ) Ċ // Ċ // ĠĠĠ Ġval Ġresult Ġ= Ġcursor ?. moveTo First () Ġ?: Ġfalse Ċ // Ċ // ĠĠĠ Ġcursor ?. close () Ċ // Ċ // ĠĠĠ Ġreturn Ġresult Ċ //}