Как сохранить приложения для Android всегда в состоянии входа в систему?

25
задан Hasnain Azam Soomro 13 August 2015 в 08:41
поделиться

4 ответа

Используйте Shared Preference для автоматического входа в систему. Когда пользователи входят в ваше приложение, сохраняйте статус входа в sharedPreference и очищайте sharedPreference, когда пользователи выходят из системы.

Проверяйте каждый раз, когда пользователь входит в приложение, если статус пользователя из общего предпочтения равен true, тогда нет необходимости повторно входить в систему, в противном случае перейдите непосредственно на страницу входа.

Для этого сначала создайте класс, в этом классе вам нужно написать всю функцию, касающуюся значений get и set, в разделяемом предпочтении. Пожалуйста, посмотрите на этот код ниже.

public class SaveSharedPreference 
{
    static final String PREF_USER_NAME= "username";

    static SharedPreferences getSharedPreferences(Context ctx) {
        return PreferenceManager.getDefaultSharedPreferences(ctx);
    }

    public static void setUserName(Context ctx, String userName) 
    {
        Editor editor = getSharedPreferences(ctx).edit();
        editor.putString(PREF_USER_NAME, userName);
        editor.commit();
    }

    public static String getUserName(Context ctx)
    {
        return getSharedPreferences(ctx).getString(PREF_USER_NAME, "");
    }
}

Теперь в основном действии («Деятельность», где пользователи будут перенаправлены при входе в систему) сначала проверьте

if(SaveSharedPreference.getUserName(MainActivity.this).length() == 0)
{
     // call Login Activity
}
else
{
     // Stay at the current activity.
}

В действии «Вход в систему», если вход в систему успешен, затем установите имя пользователя с помощью setUserName () функция.

60
ответ дан cNgamba 13 August 2015 в 08:41
поделиться

после входа в систему при повторном нажатии звоните moveTaskToBack(true);

из этого ваше приложение будет в фоновом режиме. надеюсь, что поможет

0
ответ дан Deepak Swami 13 August 2015 в 08:41
поделиться

Просто хотел опубликовать другое решение, которое я нашел самым простым для меня:

SharedPreferences sharedpreferences;
int autoSave;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //"autoLogin" is a unique string to identify the instance of this shared preference
    sharedpreferences = getSharedPreferences("autoLogin", Context.MODE_PRIVATE);
    int j = sharedpreferences.getInt("key", 0);

    //Default is 0 so autologin is disabled
    if(j > 0){
        Intent activity = new Intent(getApplicationContext(), HomeActivity.class);
        startActivity(activity);
    }

}

    public void loginBtn(View view){
        //Once you click login, it will add 1 to shredPreference which will allow autologin in onCreate 
        autoSave = 1;
        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putInt("key", autoSave);
        editor.apply();
}

Теперь давайте предположим, что у меня есть кнопка выхода из другого упражнения:

SharedPreferences sharedPreferences;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    //Get that instance saved in the previous activity
    sharedPreferences = getSharedPreferences("autoLogin", Context.MODE_PRIVATE);
}


@Override
public void signOut(View view) {
    //Resetting value to 0 so autologin is disabled
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt("key", 0);
    editor.apply();

    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
    startActivity(intent);

    }
0
ответ дан Syed Sadman 13 August 2015 в 08:41
поделиться

Всегда и всегда ... так что это похоже на автоматический вход в систему. Приложение запускается, пользователь не должен входить снова, как только он предоставил свою авторизационную информацию. Есть несколько способов добиться этого. API Facebook, например предоставляет механизм входа в систему без использования элемента формы. Таким образом, вам в основном придется создать представление, в котором пользователь может один раз предоставить свои данные авторизации, сохранить их в SharedPreferences и автоматически войти в следующий раз. Даже если такого входа в систему на основе API нет, и вам необходимо использовать предоставленную форму входа в систему, иногда вы можете имитировать POST-запрос для входа в систему. Это зависит от фактической реализации этой формы на стороне сервера. Но помните: это проблема безопасности. Поэтому никогда не храните учетные данные авторизации в текстовом формате. Не полагайтесь на то, что он будет зашифрован определенным ключом в вашем приложении, так как этот ключ может быть обнаружен путем обратного инжиниринга вашего APK. Вместо этого используйте много коллективной информации об устройстве и ключе, который пользователь должен ввести или случайно генерируется и сохраняется приложением.

9
ответ дан Peter 13 August 2015 в 08:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: