2015-01-06 7 views
2

Существует ли стандартный способ обработки сеансов для приложений Android, где вход в систему происходит только один раз и в большинстве случаев он остается в автономном режиме, кроме синхронизации? (Для этого варианта использования мы определяем сеанс как запуск и выход приложения. Сессия не зависит от входа и выхода из системы)Как поддерживать сеансы для автономных приложений android

+1

http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/ –

ответ

3

Вы можете использовать общие настройки приложений в Android для поддержки хранения сеансов, Здесь я делюсь полный класс PreferenceHandler я в основном использовать в приложения для Android,

public class PreferenceHelper { 

    SharedPreferences preferences; 
    Context context; 
    Editor editor; 
    public static final String PREFERENCES_NAME = "YourApplicationName"; 

    public PreferenceHelper(Context context) { 
     preferences = context.getSharedPreferences(PREFERENCES_NAME, 
       Context.MODE_PRIVATE); 
    } 

    public void addPreference(String key, String value) { 
     editor = preferences.edit(); 
     editor.putString(key, value); 
     editor.commit(); 
    } 

    public void addPreference(String key, Set<String> values) { 
     editor = preferences.edit(); 
     editor.putStringSet(key, values); 
     editor.commit(); 
    } 

    public void addPreference(String key, int value) { 
     editor = preferences.edit(); 
     editor.putInt(key, value); 
     editor.commit(); 
    } 

    public void addPreference(String key, float value) { 
     editor = preferences.edit(); 
     editor.putFloat(key, value); 
     editor.commit(); 
    } 

    public void addPreference(String key, boolean value) { 
     editor = preferences.edit(); 
     editor.putBoolean(key, value); 
     editor.commit(); 
    } 

    public void addPreference(String key, long value) { 
     editor = preferences.edit(); 
     editor.putLong(key, value); 
     editor.commit(); 
    } 

    public void editPreference(String key, String value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public void editPreference(String key, Set<String> value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public void editPreference(String key, int value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public void editPreference(String key, float value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public void editPreference(String key, boolean value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public void editPreference(String key, long value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public String getStringValue(String key) { 
     String value = preferences.getString(key, ""); 
     return value; 
    } 

    public Set<String> getValues(String key) { 
     Set<String> values = preferences.getStringSet(key, null); 
     return values; 
    } 

    public int getIntValue(String key) { 
     int value = preferences.getInt(key, -1); 
     return value; 
    } 

    public boolean getBooleanValue(String key) { 
     boolean value = preferences.getBoolean(key, false); 
     return value; 
    } 

    public float getFloatValue(String key) { 
     float value = preferences.getFloat(key, -1); 
     return value; 
    } 

    public Long getLongValue(String key) { 
     Long value = preferences.getLong(key, -1); 
     return value; 
    } 

    public void removeKey(String key) { 
     preferences.edit().remove(key); 
     preferences.edit().commit(); 
    } 

    public void clearAllPreferences() { 
     preferences.edit().clear(); 
     preferences.edit().commit(); 
    } 
} 

Для вызова и использовать это в вашем приложении просто создать объект этого класса,

PreferenceHelper preferences=new PreferenceHelper(getApplicationContext()); 

и если вы используете сегменты или любому другому суб использовании раскладки этот метод,

PreferenceHelper preferences = new PreferenceHelper(getActivity().getApplicationContext()); 

Ниже приведен пример того, как я использую это как в моем требовании для входа

if (preferences.getBooleanValue("is_logged")) { 
      preferences 
        .addPreference("last_login", DateHelper.getCurrentDate()); 
      startActivity(new Intent(this, MainActivity.class)); 
      finish(); 
     } 

для установки значений в предпочтения Я использую этот метод при логине времени, в использовании методы Логина,

preferences.addPreference("is_logged", true); 
preferences.addPreference("email", email); 
preferences.addPreference("user_name", username); 
preferences.addPreference("password", password); 
preferences.addPreference("last_login", 
DateHelper.getCurrentDate()); 
int uid = JsonHelper.getReturnID(result); 
boolean is_admin, is_manager; 
is_admin = JsonHelper.getBoolean(result, "is_admin"); 
is_manager = JsonHelper.getBoolean(result, "is_manager"); 
preferences.addPreference("is_admin", is_admin); 
preferences.addPreference("is_manager", is_manager); 
preferences.addPreference("uid", uid); 
String phone, name; 
phone = JsonHelper.getStringFromResult(result, "phone"); 
name = JsonHelper.getStringFromResult(result, "name"); 
preferences.addPreference("phone", phone); 
preferences.addPreference("name", name); 
startActivity(new Intent(StartingActivity.this, 
MainActivity.class)); 

Надеется, что это будет решать ваш вопрос.

+0

спасибо за ответ, был нужен, если есть стандартный способ создания идентификаторов сеансов на Android приложение, а затем синхронизирует его с сервером. – shanu

+0

В настоящий момент в андроиде нет такого стандартного метода. Все, что вам нужно сделать, - это обработать ваш код вручную. –

Смежные вопросы