Android内部存储可能性

时间:2014-04-22 08:57:45

标签: android sharedpreferences

我正在创建一个Android应用程序,在其生命周期中只需要一次登录,直到用户卸载它。我的意思是,它记住用户名和密码,就像应用程序那样。这是我到目前为止所尝试的......

SharedPreferences prefer = getSharedPreferences("typeOfUser",0);
String x = prefer.getString("xyz","");

if(xyz.equals("")){
    // do move to login page
else 
     // do not move to login page

这是最好的方法吗?告诉我最好的方法,以及它的缺点。

1 个答案:

答案 0 :(得分:0)

是SharedPreferences最适合您的应用程序实现一次登录。你需要做的是你需要在SharedPreferences中存储值,然后你可以检查逻辑,创建一个util类,如下所示:

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;

public class Utils {

    public static void savePreferences(Activity activity, String key1,
            String value1, String key2, String value2) {
        SharedPreferences sp = PreferenceManager
                .getDefaultSharedPreferences(activity.getApplicationContext());
        Editor editor = sp.edit();
        editor.clear();
        editor.putString(key1, value1);
        editor.putString(key2, value2);
        editor.commit();
    }

    public static String readPreferences(Activity activity, String key,
            String defaultValue) {
        SharedPreferences sp = PreferenceManager
                .getDefaultSharedPreferences(activity.getApplicationContext());
        return sp.getString(key, defaultValue);
    }
}

最后我们可以按如下方式使用它

Utils.savePreferences(MainActivity.this, "username", userNameValue,
                "password", passwordValue);

并获取数据

Utils.readPreferences(MainActivity.this, "username", "default username");

Utils.readPreferences(MainActivity.this, "password",
                        "default password");

除此之外你知道你可以使用默认的共享偏好

SharedPreferences sp = PreferenceManager
                .getDefaultSharedPreferences(activity.getApplicationContext());

而不是在上面做的是你可以做的是给出具有给定模式的显式命名的sharedpreferences

SharedPreferences sp = activity.getApplicationContext()
                .getSharedPreferences("SomePref", activity.MODE_PRIVATE);

在我看来这是实现一次登录的好方法!!并且缺点是,如果有人清除应用程序的数据,那么价值将会消失,但是希望它对您来说不是一个大问题。

注意:您可以根据自己在Util类中对逻辑的需要进行必要的更改。

完全按照您的期望下载完整的示例

<强> https://github.com/junal/Android-SharedPreferences

<强> https://github.com/scottyab/secure-preferences