package Ġcom . k ier on qu inn . app . t apt ap . providers Ċ Ċ import Ġandroid . content .* Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . database . Matrix Cursor Ċ import Ġandroid . net . Uri Ċ import Ġcom . k ier on qu inn . app . t apt ap . Build Config Ċ import Ġcom . k ier on qu inn . app . t apt ap . utils . bool Pref To Uri Ċ import Ġcom . k ier on qu inn . app . t apt ap . utils . int Pref To Uri Ċ import Ġcom . k ier on qu inn . app . t apt ap . utils . string Pref To Uri Ċ Ċ // Based Ġoff Ġhttps :// code . high spec . ru / M ikan oshi / C usto MI UI zer Ċ class ĠShared Prefs Provider Ġ: ĠContent Provider (), ĠSharedPreferences . On Shared Preference ChangeListener Ġ{ ĊĠĠĠ Ġvar Ġprefs : ĠSharedPreferences ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAUTH ORITY Ġ= Ġ"${ Build Config . APPLICATION _ ID }. provider . shared prefs " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġuri Matcher Ġ= ĠUri Matcher ( Uri Matcher . NO _ MATCH ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri Matcher . add URI ( AUTH ORITY , Ġ" string /* ", Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri Matcher . add URI ( AUTH ORITY , Ġ" integer /* ", Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri Matcher . add URI ( AUTH ORITY , Ġ" boolean /* ", Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs Ġ= Ġcontext ?. get SharedPreferences ("${ Build Config . APPLICATION _ ID }_ prefs ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs ?. register On Shared Preference ChangeListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery ( uri : ĠUri , Ġprojection : ĠArray < String > ?, Ġselection : ĠString ?, Ġselection Args : ĠArray < String > ?, Ġsort Order : ĠString ?): ĠCursor ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġuri . path Segments ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= ĠMatrix Cursor ( array Of (" data ")) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( uri Matcher . match ( uri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . new Row (). add (" data ", Ġprefs !!. getString ( parts [ 1 ], Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcursor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . new Row (). add (" data ", Ġprefs !!. getInt ( parts [ 1 ], Ġ- 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcursor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . new Row (). add (" data ", Ġif Ġ( prefs !!. getBoolean ( parts [ 1 ], Ġfalse )) Ġ 1 Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcursor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetType ( uri : ĠUri ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert ( uri : ĠUri , Ġvalues : ĠContent Values ?): ĠUri ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( uri : ĠUri , Ġselection : ĠString ?, Ġselection Args : ĠArray < String >? ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( uri : ĠUri , Ġvalues : ĠContent Values ?, Ġselection : ĠString ?, Ġselection Args : ĠArray < String >? ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Shared Preference Changed ( shared Preferences : ĠSharedPreferences , Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġwhen ( shared Preferences . all [ key ]){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġstring Pref To Uri ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġint Pref To Uri ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġbool Pref To Uri ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( uri Ġ!= Ġnull ) Ġnotify Change ( uri ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify Change ( uri : ĠUri ){ ĊĠĠĠĠĠĠĠ Ġcontext ?. content Resolver ?. notify Change ( uri , Ġnull ) ĊĠĠĠ Ġ} Ċ Ċ }