4

我是一名新手 Android 开发人员,目前正在努力构建登录屏幕。

我需要找到将用户名和密码存储在一类中并从另一类中检索的最简单方法。见谷歌提供了几种方式:http: //developer.android.com/guide/topics/data/data-storage.html

哪一个是最有效和最容易编码的?

谢谢!

4

5 回答 5

4

对于存储用户名和密码等登录屏幕任务,您可以使用共享首选项。在这里,我制作了使用共享首选项的自定义方法。调用savePreferences()方法并放置您的 Key 和 Value(savePreferences()基于 XML),同样使用您的 Key 调用 Load。最后不要忘记调用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;
}

希望这对您有所帮助。不要忘记做+1。

于 2012-09-28T12:29:36.663 回答
4

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

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);
于 2012-09-28T12:32:12.573 回答
3

出于您的目的,SQLite 数据库和 SharedPreferences 都可以使用。但我建议使用 SharedPreferences,因为它们非常易于使用。有些人喜欢创建一个类来保存这样的变量,但 SQLite 和 SharedPreferences 文件的好处是,即使应用程序进入后台并被破坏,用户登录名和密码信息也会随身携带。因此,当用户返回您的应用时,您可以再次登录,而无需输入密码。如果用户明确决定注销,您可以简单地从共享首选项文件中删除登录信息

于 2012-09-28T12:22:41.427 回答
1

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

于 2012-09-28T12:25:59.863 回答
0

许多应用程序可以提供一种方法来捕获用户对特定应用程序或活动设置的偏好。为了支持这一点,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);

最后,一旦有了首选项实例,您可以通过以下方式从首选项中检索存储的值:

   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() 等方法从文件中删除首选项值。

活动偏好:

其他应用程序组件可以使用共享首选项。但是,如果您不需要与其他组件共享偏好并希望拥有活动私人偏好。您可以在活动的 getPreferences() 方法的帮助下做到这一点。getPreference 方法使用 getSharedPreferences() 方法和活动类的名称作为首选项文件名。

以下是获取首选项的代码:

   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 数据存储帖子。

有关更多信息,请查看此链接:

使数据在android中持久化

于 2012-09-28T12:27:47.450 回答