package Ġre . fl ande . x share Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġjava . io . File Ċ import Ġjava . io . InputStream Ċ Ċ class ĠImport Activity Ġ: ĠActivity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontents Ġ= Ġintent . extras ?. get ByteArray (" contents ") ĊĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString ? ĊĠĠĠĠĠĠĠ Ġval Ġin _: ĠInputStream ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġintent . data . get Filename ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin _ Ġ= Ġcontent Resolver . open InputStream ( intent . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontents Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġintent . extras . getString (" name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin _ Ġ= Ġcontents . inputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail ( Exception ( resources . getString ( R . string . nothing _ to _ import ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ!= Ġnull Ġ&& Ġname . split ('. '). last () Ġ!= Ġ" s xc u ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġget Fatal Dialog Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . file _ not _ s xc u ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . proceed _ any way , Ġnull ) Ġ// Ġprevents Ġcalling Ġd . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel , Ġ{ Ġ_, Ġ_ Ġ-> Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġd . setOn Show Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . get Button ( AlertDialog . BUTTON _ POSITIVE ). setOnClickListener Ġ{ Ġimport Stream ( in _); Ġd . hide () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd . show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Stream ( in _) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġimport ( up : ĠU plo ader ) Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ( up . Name Ġ+ Ġ". s xc u "). replace ("/", Ġ" âģ Ħ ") ĊĠĠĠĠĠĠĠ Ġval Ġf Ġ= ĠFile ( get External Files Dir ( null ), Ġname ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( f . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġget Fatal Dialog Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( resources . getString ( R . string . thing _ already _ exists , Ġup . Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . overwrite , Ġ{ Ġ_, Ġ_ Ġ-> Ġup loader ToFile ( up , Ġf ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Neutral Button ( R . string . rename , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel , Ġ{ Ġ_, Ġ_ Ġ-> Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġd . setOn Show Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . get Button ( AlertDialog . BUTTON _ NE UT R AL ). setOnClickListener Ġ{ Ġrename ( up ); Ġd . hide () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd . show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġup loader ToFile ( up , Ġf ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfail ( e ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġimport Stream ( in Stream : ĠInputStream ) Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġup Ġ= ĠU plo ader . from InputStream ( in Stream ) ĊĠĠĠĠĠĠĠ Ġimport ( up ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfail ( e ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfail ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" fail ()' d , Ġstack Ġtrace Ġbelow ") ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġget Fatal Dialog Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . unable _ to _ import ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( e . localized Message Ġ?: Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok , Ġ{ Ġ_, Ġ_ Ġ-> Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrename ( up : ĠU plo ader ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFIXME : Ġthe ĠI ME Ġdoesn 't Ġget Ġhidden Ġwhen Ġcancelled ĊĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġval Ġedit Ġ= ĠEditText ( this ) ĊĠĠĠĠĠĠĠ Ġedit . set Single Line () ĊĠĠĠĠĠĠĠ Ġedit . hint Ġ= Ġresources . getString ( R . string . name ) ĊĠĠĠĠĠĠĠ Ġedit . append ( up . Name ) ĊĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġget Fatal Dialog Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( edit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . rename , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel , Ġ{ Ġ_, Ġ_ Ġ-> Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠĠĠĠĠ Ġval Ġon Done Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġup . Name Ġ= Ġedit . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport ( up ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( edit . window Token , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġedit . setOn Editor ActionListener Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> Ġon Done (); Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġd . setOn Show Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd . get Button ( AlertDialog . BUTTON _ POSITIVE ). setOnClickListener Ġ{ Ġon Done () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimm . show Soft Input ( edit , ĠInput Method Manager . SHOW _ FOR CED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġd . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġup loader ToFile ( up : ĠU plo ader , Ġf : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġf . writer (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . write ( Gson Builder (). set Pretty Print ing (). create (). toJson ( up )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġresources . getString ( R . string . thing _ added , Ġup . Name ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġfinish Affinity () ĊĠĠĠ Ġ} Ċ } Ċ