Android中的共享首选项?

jk9hmnmh  于 2023-01-03  发布在  Android
关注(0)|答案(5)|浏览(216)

我是一个新手Android开发谁目前正在努力建立一个登录屏幕.
我需要找到最简单的方法来存储用户名和密码在1类和检索它从另一个类。看到谷歌提供了几种方法:http://developer.android.com/guide/topics/data/data-storage.html
哪一个是最有效和最容易编码的?
谢谢!

pn9klfpd

pn9klfpd1#

对于登录界面的任务,如存储用户名和密码,你可以使用共享首选项。在这里,我为使用共享首选项定制了方法。调用savePreferences()方法,并把你的键和值(因为savePreferences()是基于XML的),类似地调用加载与你的键。最后不要忘记调用deletePreferences()的LOGOUT。

/**
 *   Method used to get Shared Preferences */

public SharedPreferences getPreferences() 
{
    return getSharedPreferences(<PREFRENCE_FILE_NAME>, MODE_PRIVATE);
}
/**
 *  Method used to save Preferences */
public void savePreferences(String key, String value) 
{
    SharedPreferences sharedPreferences = getPreferences();
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
}
/**
 *  Method used to load Preferences */
public String loadPreferences(String key) 
{
    try {
        SharedPreferences sharedPreferences = getPreferences();
        String strSavedMemo = sharedPreferences.getString(key, "");
        return strSavedMemo;
    } catch (NullPointerException nullPointerException) 
    {
        Log.e("Error caused at  TelaSketchUtin loadPreferences method",
                ">======>" + nullPointerException);
        return null;
    }
}
/**
 *  Method used to delete Preferences */
public boolean deletePreferences(String key)
{
    SharedPreferences.Editor editor=getPreferences().edit();
    editor.remove(key).commit();
    return false;
}
fdx2calv

fdx2calv2#

定义一些静态项来存储首选项文件名和要使用的键:

public static final String PREFS_NAME = "MyPrefsFile";
private static final String PREF_USERNAME = "username";
private static final String PREF_PASSWORD = "password";

然后按如下方式保存用户名和密码:

getSharedPreferences(PREFS_NAME,MODE_PRIVATE)
.edit()
.putString(PREF_USERNAME, username)
.putString(PREF_PASSWORD, password)
.commit();

因此,您可以像这样检索它们:

SharedPreferences pref = getSharedPreferences(PREFS_NAME,MODE_PRIVATE);   
String username = pref.getString(PREF_USERNAME, null);
String password = pref.getString(PREF_PASSWORD, null);

if (username == null || password == null) {

//Prompt for username and password
}

或者,如果您不想命名首选项文件,可以只使用默认值:

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
b09cbbtk

b09cbbtk3#

对于你的目的,SQLite数据库和SharedPreferences都可以。但是我建议使用SharedPreferences,因为它们非常容易使用。有些人喜欢创建一个类来保存这样的变量,但是SQLite和SharedPreferences文件的好处是,即使应用程序进入后台并被销毁,用户登录名和密码信息也会在你身边。所以当用户回到你的应用程序时,您可以在不询问密码的情况下再次登录。如果用户明确决定注销,您只需从共享首选项文件中删除登录信息即可

2w3rbyxf

2w3rbyxf4#

从其他活动中检索登录信息最简单的方法是使用“SharedPreferences”。我强烈推荐这种方法来存储和检索用户名和密码。因为您可以从应用程序的任何地方访问这些信息而不会有任何复杂性。登录信息可能要在应用程序中重复使用。

f5emj3cl

f5emj3cl5#

许多应用程序都提供了一种方法来捕捉用户对特定应用程序或Activity设置的偏好,为此,Android提供了一组简单的API。
首选项通常是名称值对。它们可以作为"共享首选项"存储在应用程序中的各个活动之间(请注意,当前它不能在流程之间共享)。或者,它可以是需要特定于某个活动存储的内容。
共享首选项:共享的偏好可以由应用程序外的所有组件(活动、服务等)使用。
已处理活动首选项:这些首选项只能在活动中与一起使用,不能由应用程序的其他组件使用。
共享首选项:
共享首选项是在Context类的getSharedPreferences方法的帮助下管理的。首选项存储在默认文件(1)中,或者您可以指定一个用于引用首选项的文件名(2)。
(1)下面是在指定文件名时获取示例的方法

public static final String PREF_FILE_NAME = "PrefFile";
  SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATE是首选项的操作模式。它是默认模式,意味着创建的文件将仅由调用应用程序访问。支持的其他两种模式是MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。在MODE_WORLD_READABLE中,其他应用程序可以读取创建的文件,但不能修改它。在MODE_WORLD_WRITEABLE中,其他应用程序也对创建的文件具有写权限。
(2)建议的方法是按默认模式使用,而不指定文件名:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

最后,一旦有了preference示例,下面是从preference中检索存储值的方法:

int storedPreference = preferences.getInt("storedInt", 0);

要在首选项文件SharedPreference中存储值,必须使用Editor对象。Editor是SharedPreference类的嵌套接口。

SharedPreferences.Editor editor = preferences.edit();
   editor.putInt("storedInt", storedPreference); // value to store
   editor.commit();

编辑器还支持remove()和clear()这样的方法来从文件中删除首选项值。
活动首选项:
共享首选项可由其他应用程序组件使用。但如果您不需要与其他组件共享首选项,而希望拥有Activity私有首选项,则可以在Activity的getPreferences()方法的帮助下完成此操作。getPreference方法使用getSharedPreferences()方法,并将Activity类的名称用作首选项文件名。
下面是获取首选项的代码:

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
   int storedPreference = preferences.getInt("storedInt", 0);

存储值的代码也与共享首选项的情况相同。

SharedPreferences preferences = getPreference(MODE_PRIVATE);
   SharedPreferences.Editor editor = preferences.edit();
   editor.putInt("storedInt", storedPreference); // value to store
   editor.commit();

您也可以使用其他方法,如将活动状态存储在数据库中。注Android还包含一个名为android.preference的包。该包定义了实现应用首选项UI的类。
要查看更多示例,请查看开发人员网站上的Android数据存储帖子。
有关详细信息,请查看此链接:
Making data persistent in android

相关问题