package Ġcom . example . k ale pa Ċ Ċ import Ġandroid . Manifest . permission . CAMERA Ċ import Ġandroid . Manifest . permission . READ _ EXTERNAL _ STORAGE Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Content U ris Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Documents Contract Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 4 . content . File Provider Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . widget . Grid LayoutManager Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . EditText Ċ Ċ import Ġandroid . widget . PopupMenu Ċ import Ġandroid . widget . TextView Ċ import Ġcom . android networking . Android Networking Ċ import Ġcom . android networking . error . AN Error Ċ import Ġcom . android networking . interfaces . JSONObject RequestListener Ċ Ċ import Ġcom . example . character manager . Main ListAdapter Ċ import Ġcom . example . k ale pa . Adapters . Upload Image Adapter Ċ import Ġcom . example . k ale pa . Preferences . Shared App Ċ Ċ import Ġcom . github . kit tin un f . fuel . android . extension . response Json Ċ import Ġcom . github . kit tin un f . fuel . http Get Ċ import Ġcom . github . kit tin un f . fuel . http Post Ċ import Ġcom . github . kit tin un f . result . Result Ċ import Ġkotlinx . android . synt hetic . main . activity _ upload .* Ċ Ċ import Ġorg . jetbrains . ank o . toast Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . File Ċ Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠUpload Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġimage Urls Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġcategories Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġserver Categories Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġselected Action Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġval ĠFIN AL _ TA KE _ PH OTO Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval ĠFIN AL _ CH OOSE _ PH OTO Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġvar Ġimage Uri : ĠUri ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġimage Path : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcamera Images Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ upload ) ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠMainActivity (). project URL Ġ+ Ġ"/ categories " ĊĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġurl . http Get (). header ( Pair (" Cookie ", ĠShared App . prefs . cookie )) ĊĠĠĠĠĠĠĠ Ġreq . response Json Ġ{ Ġrequest , Ġresponse , Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Error Ġc arg ando Ġcategor ÃŃas ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . start ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġresult . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaux Ġ= ĠjsonObject . get (" list "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseparate Ġ= Ġaux . split (""" (\ ", \") | (\ [\ ") |( \"\ ]) """. to Regex ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver Categories Ġ= ĠArrayList ( separate . slice ( Int Range ( 1 , separate . size - 2 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġn _ Upload _ category _ button . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Category Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm _ image _ sub ir . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Image Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm _ button _ upload . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Product () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Images ( items : ĠArrayList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġm _ images _ container . layout Manager Ġ= ĠGrid LayoutManager ( this , Ġitems . size ) ĊĠĠĠĠĠĠĠ Ġval Ġimage Item Adapters Ġ= Ġitems . map ( this :: create Category Item Adapter ) ĊĠĠĠĠĠĠĠ Ġm _ images _ container . adapter Ġ= ĠMain ListAdapter ( image Item Adapters ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Category Item Adapter ( image : ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠUpload Image Adapter ( image , ĊĠĠĠĠĠĠĠ Ġ// Bitmap Factory . decode Stream ( getContent Resolver (). open InputStream ( image )), ĊĠĠĠĠĠĠĠ Ġ{ Ġshow Image Menu ( image ) Ġ}) ĊĊĠĠĠ Ġprivate Ġfun Ġshow Image Menu ( image : ĠString ) Ġ: Boolean { ĊĠĠĠĠĠĠĠ Ġvar Ġpopup Ġ= ĠPopup Menu ( this , Ġm _ Upload _ menu _ reference ) ĊĠĠĠĠĠĠĠ Ġpopup . inflate ( R . menu . delete _ menu ) ĊĠĠĠĠĠĠĠ Ġpopup . setOn MenuItem ClickListener ( PopupMenu . On MenuItem ClickListener Ġ{ Ġitem : ĠMenuItem ? Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item !!. itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . delete _ staff _ menu Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Urls . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Urls . remove ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Images ( image Urls ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Imagen ĠE limin ada ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" No Ġse Ġpuede Ġde jar Ġmenos Ġde Ġuna Ġimagen ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġpopup . show () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupload Product Ġ() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog View Ġ= Ġlayout Inflater . inflate ( R . layout . progress _ dialog , null ) ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġdialog View . findViewById < TextView >( R . id . message ) ĊĠĠĠĠĠĠĠ Ġmessage . text Ġ= Ġ" Comp rob ando Ġdatos ..." ĊĠĠĠĠĠĠĠ Ġbuilder . setView ( dialog View ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( check _ fields ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbid Date Ġ= Ġnow . get ( Calendar . YEAR ). toString () Ġ+ Ġ"-" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% 0 2 d ", now . get ( Calendar . MONTH )) Ġ+ Ġ"-" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% 0 2 d ", now . get ( Calendar . DAY _ OF _ MONTH )) Ġ+ Ġ" Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% 0 2 d ", now . get ( Calendar . HOUR )) Ġ+ Ġ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% 0 2 d ", now . get ( Calendar . MINUTE )) Ġ+ Ġ":" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% 0 2 d ", now . get ( Calendar . SECOND )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . accum ulate (" title ", Ġm _ Upload _ titulo . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . accum ulate (" de script ", Ġm _ Upload _ descripcion . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . accum ulate (" price ", Ġm _ Upload _ precio . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . accum ulate (" bid _ date ", Ġbid Date ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . accum ulate (" place ", ĠShared App . prefs . user Place ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . accum ulate (" main _ img ", Ġimage Urls [ 0 ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcategories . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . accum ulate (" categories ", Ġcategories [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġimage Urls . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . accum ulate (" photo _ urls ", Ġimage Urls [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠMainActivity (). project URL Ġ+ Ġ"/ product " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġurl . http Post (). body ( jsonObject . toString ()). header ( Pair (" Cookie ", ĠShared App . prefs . cookie )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreq . http Headers [" Content - Type "] Ġ= Ġ" application / json " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreq . response Ġ{ Ġrequest , Ġresponse , Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" No Ġse Ġha Ġpod ido Ġsub ir Ġel Ġart ÃŃc ulo , Ġpor Ġfavor , Ġintent e lo ĠmÃ¡s Ġtar de ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . start ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Producto Ġsub ido ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck _ fields Ġ() Ġ: ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġright Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m _ Upload _ titulo . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm _ Upload _ titulo . error Ġ= Ġ" El Ġcampo Ġno Ġpuede Ġser Ġvac io " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m _ Upload _ descripcion . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm _ Upload _ descripcion . error Ġ= Ġ" El Ġcampo Ġno Ġpuede Ġser Ġvac io " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( categories . size Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn _ Upload _ category _ text . error Ġ= Ġ" Min imo Ġdos Ġcategor ÃŃa " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( image Urls . size Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Intro du z ca Ġdos Ġimagen es Ġcomo Ġm ÃŃn imo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġ""" [ 0 - 9 ]+ (. [ 0 - 9 ][ 0 - 9 ]) ? """. to Regex () ĊĠĠĠĠĠĠĠ Ġif Ġ(! regex . matches ( m _ Upload _ precio . text . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm _ Upload _ precio . error Ġ= Ġ" No Ġes Ġuna Ġcantidad ĠvÃ¡l ida " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġright ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Category Dialog (){ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġdialog : AlertDialog ĊĊĠĠĠĠĠĠĠ Ġval Ġarray Categories Ġ= ĠarrayOf Null s < String >( server Categories . size ) ĊĠĠĠĠĠĠĠ Ġval Ġarray Checked Ġ= ĠBoolean Array ( server Categories . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġserver Categories . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray Categories . set ( i , server Categories [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchecked Ġ= Ġcategories . indexOf ( server Categories [ i ]) Ġ!= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray Checked . set ( i , true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray Checked . set ( i , false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle (" E li ja Ġcategor ÃŃas ") ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Multi Choice Items ( array Categories , Ġarray Checked , Ġ{ dialog , which , isChecked -> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray Checked [ which ] Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠCategory Ġ= Ġarray Categories [ which ] ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġpositive / yes Ġbutton Ġclick Ġlistener ĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" OK ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategories . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlist Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġarray Categories . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchecked Ġ= Ġarray Checked [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategories . add ( array Categories [ i ] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= Ġlist Ġ+ Ġ" Ġ# " Ġ+ Ġarray Categories [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġn _ Upload _ category _ text . setText ( list ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Image Dialog (){ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġdialog : AlertDialog ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠarrayOf (" G aler ÃŃa "," Cam ara ") ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġvar Ġselected Ġ= Ġ" G aler ÃŃa " ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle (" Â¿ De Ġdon de Ġde sea Ġcon segu ir Ġla Ġimagen ?") ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Items ( items ) Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġitems [ which ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( which Ġ== Ġ 0 ){ ĠĠĠ Ġ// G AL ER Ãį A ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Action Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Self Permission Ġ= ĠContext Compat . check Self Permission ( this , Ġandroid . Manifest . permission . WRITE _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Self Permission Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( android . Manifest . permission . WRITE _ EXTERNAL _ STORAGE ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Album () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĠĠĠĠĠĠĠĠĠĠĠ Ġ// CAM ARA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Action Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Self Permission Ġ= ĠContext Compat . check Self Permission ( this , Ġandroid . Manifest . permission . CAMERA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Read Permission Ġ= ĠContext Compat . check Self Permission ( this , Ġandroid . Manifest . permission . READ _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Self Permission Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED Ġ&& Ġcheck Read Permission Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( READ _ EXTERNAL _ STORAGE , ĠCAM ERA ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Camera () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġpositive / yes Ġbutton Ġclick Ġlistener ĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" OK ") Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Camera () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Image Ġ= ĠFile ( external Cache Dir , Ġ" output _ image " Ġ+ Ġcamera Images . toString () Ġ+ Ġ". jpg ") ĊĠĠĠĠĠĠĠ Ġif ( output Image . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Image . delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoutput Image . createNew File () ĊĠĠĠĠĠĠĠ Ġimage Uri Ġ= Ġif ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 4 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Provider . get Uri For File ( this , Ġ" com . example . k ale pa . file provider ", Ġoutput Image ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUri . from File ( output Image ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent (" android . media . action . IMAGE _ CAPTURE ") ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Media Store . EXTRA _ OUTPUT , Ġimage Uri ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠFIN AL _ TA KE _ PH OTO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Album (){ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent (" android . intent . action . GET _ CONTENT ") ĊĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" image /* " ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠFIN AL _ CH OOSE _ PH OTO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġwhen ( request Code ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== PackageManager . PERMISSION _ GRAN TED ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Action Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Album () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Camera () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Has Ġd ene g ado Ġel Ġper miso ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġwhen ( request Code ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFIN AL _ TA KE _ PH OTO Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= Ġandroid . support . v 7 . app . AlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog View Ġ= Ġlayout Inflater . inflate ( R . layout . progress _ dialog , null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġdialog View . findViewById < TextView >( R . id . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . text Ġ= Ġ" Sub i endo ĠIm agen ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setView ( dialog View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl A Ġ= ĠMainActivity (). project URL Ġ+ Ġ"/ upload " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAndroid Networking . upload ( url A ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Headers (" Content - Type ", Ġ" multipart / form - data ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Headers (" Cookie ", ĠShared App . prefs . cookie ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Multipart File (" file ", ĠFile ( external Cache Dir , Ġ" output _ image " Ġ+ Ġcamera Images . toString () Ġ+ Ġ". jpg ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). getAs JSONObject ( object Ġ: ĠJSONObject RequestListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( response : ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Urls . add ( MainActivity (). project URL Ġ+ Ġresponse . get (" message "). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany adir ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠAN Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Error Ġal Ġsub ir Ġimagen Ġde Ġcam ara ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFIN AL _ CH OOSE _ PH OTO Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 1 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Image On Kit kat ( data !!. data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Image Before Kit kat ( data !!. data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog View Ġ= Ġlayout Inflater . inflate ( R . layout . progress _ dialog , null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġdialog View . findViewById < TextView >( R . id . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . text Ġ= Ġ" Sub i endo ĠIm agen ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setView ( dialog View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl A Ġ= ĠMainActivity (). project URL Ġ+ Ġ"/ upload " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAndroid Networking . upload ( url A ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Headers (" Content - Type ", Ġ" multipart / form - data ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Headers (" Cookie ", ĠShared App . prefs . cookie ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Multipart File (" file ", ĠFile ( image Path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). getAs JSONObject ( object Ġ: ĠJSONObject RequestListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( response : ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Urls . add ( MainActivity (). project URL Ġ+ Ġresponse . get (" message "). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany adir ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠAN Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Error Ġal Ġsub ir Ġimagen Ġde Ġg aler ÃŃa ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġany adir Ġ( camera : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( camera ) Ġcamera Images ++ ĊĠĠĠĠĠĠĠ Ġshow Images ( image Urls ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Target Api ( 1 9 ) ĊĠĠĠ Ġprivate Ġfun Ġhandle Image On Kit kat ( new Uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpath : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġnew Uri // data !!. data ĊĠĠĠĠĠĠĠ Ġif Ġ( Documents Contract . is Document Uri ( this , Ġuri )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Id Ġ= ĠDocuments Contract . getDocument Id ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" com . android . providers . media . documents " Ġ== Ġuri . authority ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġdoc Id . split (": ")[ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsel set ion Ġ= ĠMedia Store . Images . Media ._ ID Ġ+ Ġ"=" Ġ+ Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġimage Path ( Media Store . Images . Media . EXTERNAL _ CONTENT _ URI , Ġsel set ion ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ(" com . android . providers . downloads . documents " Ġ== Ġuri . authority ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Uri Ġ= ĠContent U ris . with App ended Id ( Uri . parse (" content :// downloads / public _ downloads "), Ġjava . lang . Long . valueOf ( doc Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġimage Path ( content Uri , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ(" content ". equals ( uri . scheme , Ġignore Case Ġ= Ġtrue )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġimage Path ( uri , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ(" file ". equals ( uri . scheme , Ġignore Case Ġ= Ġtrue )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġuri . path ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġimage Path Ġ= Ġpath ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Image Before Kit kat ( new Uri : ĠUri ) Ġ{} ĊĊĠĠĠ Ġprivate Ġfun Ġimage Path ( uri : ĠUri ?, Ġselection : ĠString ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpath : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġcontent Resolver . query ( uri , Ġnull , Ġselection , Ġnull , Ġnull Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Images . Media . DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpath !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠUpload Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ