package Ġorg . me si bo . messenger čĊč Ċ import Ġandroid . app . backup . Backup Manager č Ċ import Ġandroid . content . Context č Ċ import Ġandroid . content . SharedPreferences č Ċ import Ġandroid . content . SharedPreferences . Editor č Ċ import Ġandroid . util . Log č Ċ import Ġcom . google . gson . Gson č Ċ import Ġorg . me si bo . messenger . Sample API . Invite čĊč Ċ /** ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠM esi bo čĊ Ġ* Ġhttps :// me si bo . com čĊ Ġ* ĠAll Ġrights Ġreserved . čĊ Ġ* čĊ Ġ* ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ġmodification , čĊ Ġ* Ġare Ġpermitted Ġprovided Ġthat Ġthe Ġterms Ġand Ġcondition Ġmentioned Ġon Ġhttps :// me si bo . com čĊ Ġ* Ġas Ġwell Ġas Ġfollowing Ġconditions Ġare Ġmet : čĊ Ġ* čĊ Ġ* ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ġlist čĊ Ġ* Ġof Ġconditions , Ġthe Ġfollowing Ġdisclaimer Ġand Ġlinks Ġto Ġdocumentation Ġand Ġsource Ġcode čĊ Ġ* Ġrepository . čĊ Ġ* čĊ Ġ* ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright Ġnotice , Ġthis čĊ Ġ* Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer Ġin Ġthe Ġdocumentation Ġand / or Ġother čĊ Ġ* Ġmaterials Ġprovided Ġwith Ġthe Ġdistribution . čĊ Ġ* čĊ Ġ* ĠNeither Ġthe Ġname Ġof ĠM esi bo Ġnor Ġthe Ġnames Ġof Ġits Ġcontributors Ġmay Ġbe Ġused Ġto Ġendorse čĊ Ġ* Ġor Ġpromote Ġproducts Ġderived Ġfrom Ġthis Ġsoftware Ġwithout Ġspecific Ġprior Ġwritten čĊ Ġ* Ġpermission . čĊ Ġ* čĊ Ġ* čĊ Ġ* ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " ĠAND čĊ Ġ* ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠTHE ĠIMPLIED čĊ Ġ* ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠARE ĠDISCLAIMED . čĊ Ġ* ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT ĠOWNER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE ĠFOR ĠANY ĠDIRECT , čĊ Ġ* ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL ĠDAMAGES Ġ( INCLUDING , čĊ Ġ* ĠBUT ĠNOT ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; ĠLOSS ĠOF ĠUSE , ĠDATA , čĊ Ġ* ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON ĠANY ĠTHEORY ĠOF ĠLIABILITY , čĊ Ġ* ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) čĊ Ġ* ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE čĊ Ġ* ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . čĊ Ġ* čĊ Ġ* ĠDocumentation čĊ Ġ* Ġhttps :// me si bo . com / documentation / čĊ Ġ* čĊ Ġ* ĠSource ĠCode ĠRepository čĊ Ġ* Ġhttps :// github . com / me si bo / messenger - app - android čĊ Ġ* čĊ Ġ*/ č Ċ class ĠApp Config ( c : ĠContext ) Ġ{ čĊĠĠĠ Ġclass ĠConfiguration Ġ{ čĊĠĠĠĠĠĠĠ Ġ@ Jvm Field čĊĠĠĠĠĠĠĠ Ġvar Ġtoken Ġ= Ġ"" čĊĠĠĠĠĠĠĠ Ġ@ Jvm Field čĊĠĠĠĠĠĠĠ Ġvar Ġphone Ġ= Ġ"" čĊĠĠĠĠĠĠĠ Ġ@ Jvm Field čĊĠĠĠĠĠĠĠ Ġvar Ġcc Ġ= Ġ"" čĊĠĠĠĠĠĠĠ Ġ@ Jvm Field čĊĠĠĠĠĠĠĠ Ġvar Ġinvite : ĠInv ite ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġ@ Jvm Field čĊĠĠĠĠĠĠĠ Ġvar Ġupload url : ĠString ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġ@ Jvm Field čĊĠĠĠĠĠĠĠ Ġvar Ġdownload url : ĠString ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġfun Ġreset () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġ"" čĊĠĠĠĠĠĠĠĠĠĠĠ Ġphone Ġ= Ġ"" čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcc Ġ= Ġ"" čĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvite Ġ= Ġnull čĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload url Ġ= Ġ"" čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload url Ġ= Ġ"" čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġvar Ġis First Time Ġ= Ġfalse čĊĠĠĠ Ġprivate Ġval ĠmContext : ĠContext čĊĠĠĠ Ġvar Ġm Shared Pref : ĠSharedPreferences ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġfun Ġbackup () Ġ{ čĊĠĠĠĠĠĠĠ Ġbm !!. data Changed () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ// ĠWe Ġcould Ġuse ĠTAG Ġalso Ġ- Ġto Ġsave / retrieve Ġsettings čĊĠĠĠ Ġval Ġapp Setting : ĠUnit čĊĠĠĠĠĠĠĠ Ġget () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġm Shared Pref !!. getString ( system Preference Key , Ġ"") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Ġ= Ġgson . fromJson ( json , ĠConfiguration :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġconfig ) Ġconfig Ġ= ĠConfiguration () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġput App Setting ( spe : ĠEditor ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () čĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġgson . toJson ( config ) čĊĠĠĠĠĠĠĠ Ġspe . putString ( system Preference Key , Ġjson ) čĊĠĠĠĠĠĠĠ Ġspe . commit () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġsave Settings (): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Updating ĠR MS Ġ.. Ġ") čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( m Shared Pref !! ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspe Ġ= Ġm Shared Pref !!. edit () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput App Setting ( spe ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackup () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Unable Ġto Ġupdate RMS (): Ġ" Ġ+ Ġe . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ// return Ġfalse ; čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġset StringValue ( key : ĠString ?, Ġvalue : ĠString ?): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( m Shared Pref !! ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo Editor Ġ= Ġm Shared Pref !!. edit () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo Editor . putString ( key , Ġvalue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo Editor . commit () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// backup (); čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Unable Ġto Ġset Ġlong Ġvalue Ġin ĠR MS :" Ġ+ Ġe . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget StringValue ( key : ĠString ?, Ġdefault Val : ĠString ): ĠString ? Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( m Shared Pref !! ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Shared Pref !!. contains ( key )) Ġm Shared Pref !!. getString ( key , Ġdefault Val ) Ġelse Ġdefault Val čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Unable Ġto Ġf et Ġlong Ġvalue Ġin ĠR MS :" Ġ+ Ġe . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Val čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġset Long Value ( key : ĠString ?, Ġvalue : ĠLong ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( m Shared Pref !! ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo Editor Ġ= Ġm Shared Pref !!. edit () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo Editor . put Long ( key , Ġvalue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo Editor . commit () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Unable Ġto Ġset Ġlong Ġvalue Ġin ĠR MS :" Ġ+ Ġe . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Long Value ( key : ĠString ?, Ġdefault Val : ĠLong ): ĠLong Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( m Shared Pref !! ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Shared Pref !!. contains ( key )) Ġm Shared Pref !!. getLong ( key , Ġdefault Val ) Ġelse Ġdefault Val čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Unable Ġto Ġf et Ġlong Ġvalue Ġin ĠR MS :" Ġ+ Ġe . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Val čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġset Int Value ( key : ĠString ?, Ġvalue : ĠInt ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( m Shared Pref !! ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo Editor Ġ= Ġm Shared Pref !!. edit () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo Editor . put Int ( key , Ġvalue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo Editor . commit () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Unable Ġto Ġset Ġint Ġvalue Ġin ĠR MS :" Ġ+ Ġe . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Int Value ( key : ĠString ?, Ġdefault Val : ĠInt ): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( m Shared Pref !! ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Shared Pref !!. contains ( key )) Ġm Shared Pref !!. getInt ( key , Ġdefault Val ) Ġelse Ġdefault Val čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Unable Ġto Ġget Ġint Ġvalue Ġin ĠR MS :" Ġ+ Ġe . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Val čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġset Boolean Value ( key : ĠString ?, Ġvalue : ĠBoolean ?): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( m Shared Pref !! ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo Editor Ġ= Ġm Shared Pref !!. edit () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo Editor . put Boolean ( key , Ġvalue !! ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo Editor . commit () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Unable Ġto Ġset Ġlong Ġvalue Ġin ĠR MS :" Ġ+ Ġe . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Boolean Value ( key : ĠString , Ġdefault Val : ĠBoolean ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Getting Ġlong Ġvalue Ġfor Ġ$ key Ġin ĠR MS Ġdirectly ") čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( m Shared Pref !! ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Shared Pref !!. contains ( key )) Ġm Shared Pref !!. getBoolean ( key , Ġdefault Val ) Ġelse Ġdefault Val čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Unable Ġto Ġf et Ġlong Ġvalue Ġin ĠR MS :" Ġ+ Ġe . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Val čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} Ġ/* čĊĠĠĠ Ġprivate Ġstatic ĠString Ġserialize Vector ( Vector < String > Ġv ss ) Ġ{ čĊĠĠĠĠĠĠĠ ĠByteArrayOutputStream Ġarray OutputStream Ġ= Ġnew ĠByteArrayOutputStream (); čĊĠĠĠĠĠĠĠ ĠObject OutputStream Ġout ; čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Ġ= Ġnew ĠObject OutputStream ( array OutputStream ); čĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write Object ( v ss ); čĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . close (); čĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray OutputStream . close (); čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( IOException Ġe ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn ĠData Utils . bytes To Hex ( array OutputStream . toByteArray ()); čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġstatic ĠVector < String > Ġde Serialize Vector ( String Ġs ) Ġ{ čĊĠĠĠĠĠĠĠ ĠVector < String > Ġv ss Ġ= Ġnull ; čĊĠĠĠĠĠĠĠ ĠByteArrayInputStream ĠbyteArray Ġ= Ġnull ; čĊĠĠĠĠĠĠĠ ĠbyteArray Ġ= Ġnew ĠByteArrayInputStream ( Data Utils . hex ToBytes ( s )); čĊčĊĠĠĠĠĠĠĠ ĠObject InputStream Ġin ; čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ= Ġnew ĠObject InputStream ( byteArray ); čĊĠĠĠĠĠĠĠĠĠĠĠ Ġv ss Ġ= Ġ( Vector < String >) Ġin . read Object (); čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( Exception Ġe ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġv ss ; čĊĠĠĠ Ġ} čĊĠĠĠ Ġ*/ čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" AppSettings " čĊĠĠĠĠĠĠĠ Ġconst Ġval Ġshared Pref Key Ġ= Ġ" org . me si bo . messenger " čĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġsystem Preference Key Ġ= Ġ" settings " čĊčĊĠĠĠĠĠĠĠ Ġ// System ĠSpecific ĠPreferences Ġ- Ġdoes Ġnot Ġchange Ġacross Ġlog ins čĊĠĠĠĠĠĠĠ Ġvar Ġconfig : ĠConfiguration ? Ġ= ĠConfiguration () čĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġbm : ĠBackup Manager ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġvar Ġinstance : ĠApp Config ? Ġ= Ġnull čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset čĊčĊĠĠĠĠĠĠĠ Ġ@ Jvm Static čĊĠĠĠĠĠĠĠ Ġfun Ġreset () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Crash Logs . set UID ( 0 ); čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// m Config Ġ= Ġnew ĠConfiguration (); Ġ// Ġwe Ġshould Ġnot Ġcreate Ġnew Ġinstance Ġelse Ġapp Ġusing Ġthis Ġinstance Ġwill Ġhave čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġissue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig !!. reset () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance !!. backup () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ@ Jvm Static čĊĠĠĠĠĠĠĠ Ġfun Ġsave () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance !!. save Settings () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfun ĠgetConfig (): ĠAny Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġconfig !! ; čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġinit Ġ{ čĊĠĠĠĠĠĠĠ Ġinstance Ġ= Ġthis čĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġc čĊĠĠĠĠĠĠĠ Ġbm Ġ= ĠBackup Manager ( mContext ) čĊĠĠĠĠĠĠĠ Ġm Shared Pref Ġ= Ġc . get SharedPreferences ( shared Pref Key , ĠContext . MODE _ PRIVATE ) čĊĠĠĠĠĠĠĠ Ġis First Time Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġif Ġ(! m Shared Pref !!. contains ( system Preference Key )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġis First Time Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġapp Setting čĊĠĠĠĠĠĠĠ Ġif Ġ( is First Time ) Ġsave Settings () čĊĠĠĠ Ġ} č Ċ }