Calling SharedPreferences using application context.
If you wish not to pass context from your activity going to your Presenters
and ViewModels
when saving or retrieving your key-value data from SharedPreferences
this might help you.
In your Application context:
public class MyApplication extends Application {
private static Context context;
@Override public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
Usage:
PreferenceManager.getDefaultSharedPreferences(MyApplication.getContext());
I created a sample SharedPreferenceData class where you can save and retrieve your key-value data.
public class SharePreferenceData {
private static final String TOKEN = "token";
private SharedPreferences sharedPreferences;
public static SharePreferenceData getInstance() {
return new SharePreferenceData();
}
private SharePreferenceData() {
this.sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getContext());
}
public void saveToken(final String token) {
sharedPreferences.edit().putString(SharePreferenceData.TOKEN, token).apply();
}
public String getToken() {
return sharedPreferences.getString(SharePreferenceData.TOKEN, StringUtils.EMPTY);
}
}
Don’t forget to modify your AndroidManifest.xml file:
<application
android:name=".MysApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"/>
To learn more about SharedPreferences visit this link.