Error on SharedPreferences - android

I implemented code for Session Management day before yesterday It's working properly but now It's giving an error on getString() please check this below code and tell me where I am wrong.
public class SessionManager {
SharedPreferences pref;
SharedPreferences.Editor editor;
Context _context;
int PRIVATE_MODE = 0;
private static final String PREF_NAME = "MaangalPref";
private static final String IS_LOGIN = "IsLoggedIn";
public static final String KEY_PASSWORD = "name";
public static final String KEY_EMAIL = "email";
public static final String KEY_GENDER = "gender";
public SessionManager(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
public SessionManager() {}
Create login session
public void createLoginSession(String name, String email, String gender){
editor.putBoolean(IS_LOGIN, true);
editor.putString(KEY_PASSWORD, name);
editor.putString(KEY_EMAIL, email);
editor.putString(KEY_GENDER, gender);
editor.commit();
}
Check login method wil check user login status
If false it will redirect user to login page Else won't do anything
public void checkLogin(){
if(!this.isLoggedIn()){
Intent i = new Intent(_context, AuthenticActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(i);
}
}
Get stored session data
public HashMap<String, String> getUserDetails(){
HashMap<String, String> user = new HashMap<String, String>();
user.put(KEY_PASSWORD, pref.getString(KEY_PASSWORD, null));
user.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null));
user.put(KEY_GENDER,pref.getString(KEY_GENDER, null));
return user;
}
public void logoutUser(){
editor.clear();
editor.commit();
Intent i = new Intent(_context, AuthenticActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(i);
}
public boolean isLoggedIn(){
return pref.getBoolean(IS_LOGIN, false);
}
}
onCreate method of Fragment Class
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Session class instance
session = new SessionManager();
// get user data from session
HashMap<String, String> user = session.getUserDetails();
email = user.get(SessionManager.KEY_EMAIL);
Log.e("email________NewMatches",email);
DATA_URL = "http://192.168.2.110/xp/new_matches.php?matri_id="+email;
Log.e("URL________NewMatches",DATA_URL);
}

I think your are calling empty constructor of SessionManager in tab fragment like
session = new SessionManager();
that you are declared in your SessionManager class
public SessionManager(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
public SessionManager() {}
so finally use in tab fragment
session = new SessionManager(getContext()); //give context of class
instead of session = new SessionManager();
use below code
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Session class instance
session = new SessionManager(getContext()); //here you have to change
// get user data from session
HashMap<String, String> user = session.getUserDetails();
email = user.get(SessionManager.KEY_EMAIL);
Log.e("email________NewMatches",email);
DATA_URL = "http://192.168.2.110/xp/new_matches.php?matri_id="+email;
Log.e("URL________NewMatches",DATA_URL);
}
and also remove empty constructor from SessionManager for future purpose....

Related

Android SharedPreference value is getting cleared on app close

I am saving my UserId on SharedPreference for future use. But that data getting cleared if I close that app or kill the app.
code used to save:
SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = app_preferences.edit();
editor.clear();
editor.putString("USERID", valu1);
editor.apply();
code to retrieve :
SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
userID = app_preferences.getString("USERID", "");
Any suggestions?
The apply() method is asynchronous and works on a background thread. It caches the data in RAM and waits until it has sufficient resources to write the data to permanent storage. Considering this, if you immediately close your app, you might lose data. Unlike apply(), commit runs on the UI thread and synchronously, do it has a guaranteed write but pauses the UI thread for a moment. The wait is insignificant though. Consider using commit() instead of apply() and see if it is helpful.
Make one session manger for that, which is separated class.
public class SessionManager {
SharedPreferences pref;
Editor editor;
Context _context;
int PRIVATE_MODE = 0;
private static final String PREF_NAME = "Android_Session";
private static final String IS_LOGIN = "IsLoggedIn";
// User name, Email,Id (make variable public to access from outside)
public static final String KEY_PHONE = "phone";
public static final String KEY_EMAIL = "email";
public static final String KEY_ID = "id";
// Constructor
public SessionManager(Context context) {
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
/**
* Create login session when user login first time call this.
*/
public void createLoginSession(String phone, String email, String id) {
editor.putBoolean(IS_LOGIN, true);
editor.putString(KEY_PHONE, phone);
editor.putString(KEY_EMAIL, email);
editor.putString(KEY_ID, id);
editor.commit();
}
/**
* Check user is login or not if not.
* This will used in dynamic app where session expired from server sideit will redirect to login page.
*/
public void checkLogin() {
if (!this.isLoggedIn()) {
// user is not logged in then redirect to Login Activity
Intent i = new Intent(_context, Login.class);
// Add flags launch modes
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(i);
}
}
/**
* Get stored session data
*/
public HashMap<String, String> getUserDetails() {
HashMap<String, String> user = new HashMap<String, String>();
user.put(KEY_PHONE, pref.getString(KEY_PHONE, null));
user.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null));
user.put(KEY_ID, pref.getString(KEY_ID, null));
return user;
}
/**
* Clear session details
*/
public void logoutUser() {
editor.clear();
editor.commit();
// After logout redirect user to Login Activity
Intent i = new Intent(_context, Login.class);
// Add Flags (Launch Modes)
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
_context.startActivity(i);
}
/**
* Check if user login or not
**/
public boolean isLoggedIn() {
return pref.getBoolean(IS_LOGIN, false);
}
}
Now to retrieve values like
SessionManager session = new SessionManager(getApplicationContext());
HashMap<String, String> user = session.getUserDetails();
String id = user.get(SessionManager.KEY_ID);
To identify login
SessionManager session = new SessionManager(getApplicationContext());
if (!session.isLoggedIn()) {
//ToDo
} else {
}

Null pointer exception on invoking Shared preference object [duplicate]

This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12 answers)
Closed 5 years ago.
When compiling my code I'm get this error
java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences.edit()'
and I still can't figure why. For these error My App got crash. Please help on this I'm not able to find the what exact mistake i did.
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences.edit()' on a null object reference
at com.chatbook.loki.chatbook.SessionManger.<init>(SessionManger.java:16)
at com.chatbook.loki.chatbook.Login.onCreate(Login.java:44)
at android.app.Activity.performCreate(Activity.java:6001)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368) 
Here is my code
SessionManager.java
public class SessionManger {
SharedPreferences pref;
SharedPreferences.Editor editor = pref.edit();
Context _context;
int PRIVATE_MODE = 0;
private static final String PREF_NAME = "exmaple";
private static final String IS_LOGIN = "IsLoggedIn";
public static final String KEY_EMAIL = "email";
public static final String KEY_PASSWORD = "password";
public SessionManger(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME,PRIVATE_MODE);
editor = pref.edit();
editor.apply();
}
public void createLoginSession(String email, String password){
editor.putBoolean(IS_LOGIN,true);
editor.putString(KEY_EMAIL, email);
editor.putString(KEY_PASSWORD, password);
editor.commit();
}
public boolean isLoggedIn(){
return pref.getBoolean(IS_LOGIN,true);
}
public void checkLogin(){
if(!this.isLoggedIn()){
Intent in = new Intent(_context,Login.class);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(in);
}
}
public HashMap<String, String> getUserDetails(){
HashMap<String,String> user = new HashMap<String, String>();
user.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null));
user.put(KEY_PASSWORD, pref.getString(KEY_PASSWORD, null));
return user;
}
public void logout(){
editor.clear();
editor.commit();
Intent in = new Intent(_context,Login.class);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(in);
}
}
and my Login activity file
public class Login extends AppCompatActivity {
Button b1,b2,b3;
EditText e1,e2;
FirebaseAuth auth;
ProgressBar pgbar;
SessionManger session;
Context context;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
auth = FirebaseAuth.getInstance();
b1 = (Button) findViewById(R.id.logBsign);
b2 = (Button) findViewById(R.id.logBlog);
b3 = (Button) findViewById(R.id.logBreset);
e1 = (EditText) findViewById(R.id.logeditemail);
e2 = (EditText) findViewById(R.id.logeditpass);
pgbar = (ProgressBar) findViewById(R.id.progressBar);
session = new SessionManger(context.getApplicationContext());
}
public void signup(View v) {
Intent in = new Intent(Login.this, SignUp.class);
startActivity(in);
}
public void login(View v){
/*Intent in = new Intent(Login.this, MainActivity.class);
startActivity(in);*/
final String email = e1.getText().toString().trim();
final String password = e2.getText().toString().trim();
if(TextUtils.isEmpty(email)){
Toast.makeText(getApplicationContext(),"Enter email address", Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(password)){
Toast.makeText(getApplicationContext(), "Enter password", Toast.LENGTH_SHORT).show();
return;
}
pgbar.setVisibility(View.VISIBLE);
auth.signInWithEmailAndPassword(email,password).addOnCompleteListener(Login.this, new OnCompleteListener<AuthResult>() {
#Override
public void onComplete(#NonNull Task<AuthResult> task) {
pgbar.setVisibility(View.GONE);
if(!task.isSuccessful()){
if(password.length() < 6){
e1.setError(getString(R.string.minimum_password));
}else{
Toast.makeText(Login.this, getString(R.string.auth_failed),Toast.LENGTH_SHORT).show();
}
}else{
session.createLoginSession(email, password);
Intent in = new Intent(Login.this, MainActivity.class);
startActivity(in);
//finish();
}
}
});
}
public void reset(View v){
Intent in = new Intent(Login.this, ResetPassword.class);
startActivity(in);
}
//To exit from App
public boolean exit = false;
#Override
public void onBackPressed() {
if(exit){
finish();;
}
else{
Toast.makeText(this,"Press again to exit",Toast.LENGTH_SHORT).show();
exit = true;
}
}
}
Do not
session = new SessionManger(context.getApplicationContext());
Do
session = new SessionManger(Login.this);
And
SharedPreferences pref;
Editor editor;
Context _context;
int PRIVATE_MODE = 0;
Then
// Constructor
public SessionManager(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
Shared preferences can be edited like below ,pass correct name
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putString(key, name);
editor.apply();
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
String name = sharedPreferences.getString(key, "default value");
fix the global variable cause null
SharedPreferences.Editor editor = pref.edit(); <-- wrong pref cause null
SharedPreferences.Editor editor; <-- just this
Optional
#SuppressLint("CommitPrefEdits")
public SessionManger(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME,PRIVATE_MODE);
editor = pref.edit();
//editor.apply(); //no need for apply
}
It's because your pref is null...
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
SharedPreferences pref;
SharedPreferences.Editor editor = pref.edit();
pref is null;

sharedpreferences is not being cleared in android

I'm storing data on sharedpreferences when user is logged in and setting it in a textview. I want to remove one specific data when user logged out. The problem is data is being stored but not removing. I have tried below code.
public class SessionManager {
SharedPreferences pref;
SharedPreferences.Editor editor;
Context _context;
int PRIVATE_MODE = 0;
private static final String PREF_NAME = "NaafcoPref";
private static final String IS_LOGIN = "IsLoggedIn";
public static final String KEY_ID = "id";
public static final String KEY_RESULT = "result";
public static final String SCAN_RESULT = "s_result";
public SessionManager(Context context) {
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
public void createLoginSession(String id) {
editor.putBoolean(IS_LOGIN, true);
editor.putString(KEY_ID, id);
editor.commit();
}
public void getResult(String result) {
editor.putBoolean(IS_LOGIN, true);
editor.putString(KEY_RESULT, result);
editor.commit();
}
public void getScanResult(String scanResult) {
editor.putString(SCAN_RESULT, scanResult);
editor.commit();
}
public void checkLogin() {
if (!this.isLoggedIn()) {
Intent i = new Intent(_context, PointActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(i);
}
}
public HashMap<String, String> getUserDetails() {
HashMap<String, String> user = new HashMap<String, String>();
user.put(KEY_ID, pref.getString(KEY_ID, null));
user.put(KEY_RESULT, pref.getString(KEY_RESULT, null));
user.put(SCAN_RESULT, pref.getString(SCAN_RESULT, null));
return user;
}
public void logoutUser() {
editor.remove(SCAN_RESULT).clear().commit();
//editor.clear();
//editor.commit();
Intent i = new Intent(_context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(i);
}
public boolean isLoggedIn() {
return pref.getBoolean(IS_LOGIN, false);
}
}
To remove specific values: SharedPreferences.Editor.remove() followed by a commit()
To remove them all SharedPreferences.Editor.clear() followed by a commit()
If you don't care about the return value and you're using this from your application's main thread, consider using apply() instead.
Try this,
public void logoutUser() {
SharedPreferences sp = Preferences.getInstance().pref;
SharedPreferences.Editor editor = sp.edit();
editor.remove(SCAN_RESULT);
editor.commit();
Intent i = new Intent(_context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(i);
}
You need to reinitialize sharepreference editer to clear data
public void logoutUser() {
editor = pref.edit();
editor.clear().commit();
Intent i = new Intent(_context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(i);
}
Try implementing this for logout:
/**
* Clear All user preferences
* Use this when user logs out
*/
public void clearPreferences() {
isLoggedIn(); // this will set the login as false
pref.edit().clear().apply();
//also clear from default preferences
SharedPreferences defaultPref = PreferenceManager.getDefaultSharedPreferences(context);
defaultPref.edit().clear().apply();
}
First you need to create singleton class like PreferenceManager
private PreferenceManager(Context ctx) {
prefs = ctx.getApplicationContext().getSharedPreferences(ctx.getPackageName(), Context.MODE_PRIVATE);
editor = prefs.edit();
}
public static PreferenceManager getInstance(Context ctx) {
if (sInstance == null) {
sInstance = new PreferenceManager(ctx);
}
return sInstance;
}
You can use below snippet
public void clearPreference() {
editor.remove("your preference key that you want to clear");
.
.add all preference key that you want to clear
.
editor.commit();
}
SharedPreferences pref = context.getSharedPreferences("s_result", Context.MODE_PRIVATE);
pref.edit().clear().commit();

HashMap save and get shared preference

I have a project and i want to save every variables that are available to the user online to the shared preference. It is their string values user_id, Fname, Lname, and their int values "lexile", "user_id".I have been following a tutorial online so far so good but it only provides saving two variables so I improvise. I didnt get any error when running but when actually using the application I cant seem to login and open the second activity maybe because of my hashmaping.
Here is the code below
this is the part of the login that is related
Response.Listener<String> responseListener = new Response.Listener<String>() {
#Override
public void onResponse(String response) {
//SUBUKAN NA ISINGIT DINE ANG PAGCHECK SA INTERNET SERCVICE
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
//OPENS THE NEW ACTIVITY
if (success) {
String Fname = jsonResponse.getString("Fname");
String Lname = jsonResponse.getString("Lname");
int lexile = jsonResponse.getInt("lexile");
int user_id = jsonResponse.getInt("user_id");
// String username = jsonResponse.getString("username");
// int user_id = jsonResponse.getInt("user_id");
Intent intent = new Intent(Login.this, User_nav.class);
intent.putExtra("Lname", Lname);
intent.putExtra("Fname", Fname);
intent.putExtra("lexile", lexile);
intent.putExtra("user_id", user_id);
// intent.putExtra("username",username);
//intent.putExtra("user_id", user_id);
//THIS IS THE PART OF THE SESSION MANAGER
session.createLoginSession(Lname, Fname, lexile, user_id);
Login.this.startActivity(intent);
progress.dismiss();
}
This is the second activity, the codes that are related
SessionManager session;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user);
session = new SessionManager(getApplicationContext());
Toast.makeText(getApplicationContext(), "User Login Status: " + session.isLoggedIn(),Toast.LENGTH_LONG).show();
session.checkLogin();
HashMap<String, String> user = session.getUserDetails();
String Lname = user.get(SessionManager.KEY_FNAME);
String Fname = user.get(SessionManager.KEY_LNAME);
HashMap<String, Integer> user_int = session.getUserLexileNID();
Integer lexile = user_int.get(SessionManager.KEY_LEXILE);
Integer user_id = user_int.get(SessionManager.KEY_USER_ID);
TextView Name = (TextView) header.findViewById(R.id.Name);
TextView displayLexile = (TextView) header.findViewById(R.id.lexile);
Name.setText(Html.fromHtml(Lname+", " +Fname));
displayLexile.setText("Lexile Level: "+lexile + "" +user_id);
This is the SessionManager that holds all of those codes for session making.
package com.capstone.jmilibraryapp;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v4.content.SharedPreferencesCompat;
import java.util.HashMap;
public class SessionManager {
SharedPreferences pref;
SharedPreferences.Editor editor;
Context _context;
int PRIVATE_MODE = 0;
private static final String PREF_NAME = "JMIPref";
private static final String IS_LOGIN = "IsLoggedIn";
public static final String KEY_FNAME = "Fname";
public static final String KEY_LNAME = "Lname";
public static final String KEY_USER_ID = "user_id";//PART OF THE PROBLEM
public static final String KEY_LEXILE = "lexile";///PART OF THE PROBLEM
//constructor
public SessionManager(Context context){
this._context = context;
pref =_context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
//create login session
public void createLoginSession(String Fname, String Lname, Integer user_id, Integer lexile){
editor.putBoolean(IS_LOGIN, true);
editor.putString(KEY_FNAME, Fname);
editor.putString(KEY_LNAME, Lname);
editor.putInt(KEY_USER_ID, user_id);
editor.putInt(KEY_LEXILE, lexile);
editor.commit();
}
//Part of the tutorial dont seem to have any problem
public HashMap<String, String> getUserDetails(){
HashMap<String, String> user = new HashMap<String, String>();
user.put(KEY_FNAME, pref.getString(KEY_FNAME, null));
user.put(KEY_LNAME, pref.getString(KEY_LNAME, null));
return user;
}
//THIS MAYBE THE SOURCE OF THE PROBLEM
public HashMap<String, Integer> getUserLexileNID(){
HashMap<String, Integer> user_int = new HashMap<>();
user_int.put(KEY_LEXILE, pref.getInt(KEY_LEXILE,-1 ));
user_int.put(KEY_USER_ID, pref.getInt(KEY_USER_ID,-1 ));
return user_int;
}
public void checkLogin(){
if (!this.isLoggedIn()) {
Intent i = new Intent(_context, Login.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(i);
}}
public void logoutUser(){
editor.clear();
editor.commit();
Intent i = new Intent(_context, Login.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_context.startActivity(i);
}
public boolean isLoggedIn(){
return pref.getBoolean(IS_LOGIN, false);
}
}

Saving user_id responce from JSON to sharepreferance

can any one help me out I really need a solution, I have already search on SO, could not success !
I want to store auto generated user_id which I am receiving from server as a JSON response in my share preference and then again get from share preference to other activity and send as a parameter to server
Here is my login Activity where I am receiving unique user id in JSON response when sending username and pass to server
public void connect(String useremail, String userpassword) throws JSONException, IOException
{
RestClient1 client = new RestClient1(Constants.serverPath + Constants.loginMethod);
client.addParam("email", useremail);
client.addParam("password", userpassword);
client.addHeader("content-type", "application/json");
try
{
String response = client.executePost();
JSONObject jsonResponse = new JSONObject(response);
String jsonData = jsonResponse.getString("code");
String jData = jsonResponse.getString("ResponseStatus");
jsData = jData;
if (jsonData.equals("200"))
{
System.out.println("responseStatus =" + jData);
startActivity(new Intent(LoginMainActivity.this, DashBoardActivity.class));
finish();
}
In the "ResponseStatus" I am geting "Login Succsesfull , user_id=1" from server <**<< want to store this response on Share Preference**
My Basic Session Manager class which is not fully construct for storing response in JSON
public class SessionManager {
// Shared Preferences
SharedPreferences pref;
// Editor for Shared preferences
Editor editor;
// Context
Context _context;
// Shared pref mode
int PRIVATE_MODE = 0;
// Sharedpref file name
private static final String PREF_NAME = "Apppersonal";
// All Shared Preferences Keys
private static final String KEY_USERID = "user_id";
// public static final String KEY_FULLNAME = "fullName";
// public static final String KEY_EMAIL = "email";
// public static final String KEY_DOB = "dateofbirth";
// public static final String KEY_ADDRESS = "address";
// Constructor
public SessionManager(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
public void createloginSession(int user_id)
{
// Storing id in pref
editor.putInt(KEY_USERID, user_id);
editor.commit();
}
public HashMap<String, String> getPersonalDetails() {
HashMap<String, String> userPersonal = new HashMap<String, String>();
userPersonal.put(KEY_FULLNAME, pref.getString(KEY_FULLNAME, null));
userPersonal.put(KEY_DOB, pref.getString(KEY_DOB, null));
userPersonal.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null));
userPersonal.put(KEY_ADDRESS, pref.getString(KEY_ADDRESS, null));
// return user
return userPersonal;
// TODO Auto-generated method stub
// return null;
}
// Clear session details
public void logoutUser(){
// Clearing all data from Shared Preferences
editor.clear();
editor.commit();
// After logout redirect user to Loing Activity
Intent i = new Intent(_context, LoginMainActivity.class);
// Closing all the Activities
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Add new Flag to start new Activity
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Staring Login Activity
_context.startActivity(i);
}
}
After getting the user_id just do the following:
SessionManager mSessionManager = new SessionManager(context);
mSessionManager.createloginSession(user_id);
Put it after extending activity
SessionManager session;
And in your method put this
session.createLoginSession(json.getString(user_id));

Categories

Resources