package Ġcom . w olf spider . ze us . sdk . system . storage Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . security . crypto . Encrypted SharedPreferences Ċ import Ġandroidx . security . crypto . Master Keys Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġsave Value To SharedPreferences With Encrypted ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġvalue : ĠT Ċ ) Ġ{ ĊĠĠĠ Ġsave Value To SharedPreferences ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn crypted SharedPreferences . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaster Keys . get OrCreate ( Master Keys . AES 2 5 6 _ GCM _ SPEC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEn crypted SharedPreferences . Pref Key Encryption Scheme . AES 2 5 6 _ SI V , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEn crypted SharedPreferences . Pref Value Encryption Scheme . AES 2 5 6 _ GCM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġsave Value To SharedPreferences ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġvalue : ĠT Ċ ) Ġ{ ĊĠĠĠ Ġsave Value To SharedPreferences ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . get SharedPreferences ( name , ĠContext . MODE _ PRIVATE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠ Ġ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġsave Value To SharedPreferences ( ĊĠĠĠĠĠĠĠ Ġshared Preferences : ĠSharedPreferences , ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġvalue : ĠT Ċ ) Ġ{ ĊĠĠĠ Ġwith ( shared Preferences . edit ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( T :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt :: class Ġ-> Ġput Int ( key , Ġvalue Ġas ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLong :: class Ġ-> Ġput Long ( key , Ġvalue Ġas ĠLong ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFloat :: class Ġ-> Ġput Float ( key , Ġvalue Ġas ĠFloat ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean :: class Ġ-> Ġput Boolean ( key , Ġvalue Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString :: class Ġ-> Ġput String ( key , Ġvalue Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġput String ( key , ĠGson (). toJson ( value , ĠT :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠgetValue From SharedPreferences ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġdefault : ĠT Ċ ): ĠT ? Ġ{ ĊĠĠĠ Ġwith ( context . get SharedPreferences ( name , ĠContext . MODE _ PRIVATE )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( T :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt :: class Ġ-> Ġget Int ( key , Ġdefault Ġas ĠInt ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLong :: class Ġ-> Ġget Long ( key , Ġdefault Ġas ĠLong ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFloat :: class Ġ-> Ġget Float ( key , Ġdefault Ġas ĠFloat ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean :: class Ġ-> Ġget Boolean ( key , Ġdefault Ġas ĠBoolean ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString :: class Ġ-> ĠgetString ( key , Ġdefault Ġas ĠString ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĠgetString ( key , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGson (). fromJson ( text , Ġobject Ġ: ĠType Token < T >() Ġ{} . type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ