Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中的共享偏好?_Android_Login_Sharedpreferences - Fatal编程技术网

Android中的共享偏好?

Android中的共享偏好?,android,login,sharedpreferences,Android,Login,Sharedpreferences,我是一名Android新手,目前正在努力构建登录屏幕 我需要找到一种最简单的方法,将用户名和密码存储在一个类中,然后从另一个类中检索它。请参见谷歌提供的几种方法: 哪一个是最有效和最容易编码的 谢谢 出于您的目的,SQLite数据库和SharedReference都可以使用。但我建议大家共享参考资料,因为它们很容易使用。一些ppl喜欢创建一个类来保存这样的变量,但SQLite和SharedReferences文件的好处是,即使应用程序进入后台并被销毁,用户登录名和密码信息也会与您在一起。因此,当

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

我需要找到一种最简单的方法,将用户名和密码存储在一个类中,然后从另一个类中检索它。请参见谷歌提供的几种方法:

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


谢谢

出于您的目的,SQLite数据库和SharedReference都可以使用。但我建议大家共享参考资料,因为它们很容易使用。一些ppl喜欢创建一个类来保存这样的变量,但SQLite和SharedReferences文件的好处是,即使应用程序进入后台并被销毁,用户登录名和密码信息也会与您在一起。因此,当用户返回到您的应用程序时,您可以在不询问密码的情况下再次登录他们。如果用户明确决定注销,您只需从共享首选项文件中删除登录信息即可

从其他活动中检索登录信息的最简单方法是使用“SharedReferences”。我强烈建议使用此方法存储和检索用户名和密码。因为您可以从应用程序中的任何位置访问此信息,而不会出现任何复杂情况。登录信息可能必须在应用程序中重复使用。

许多应用程序可能提供一种方法来捕获用户对特定应用程序或活动设置的偏好。为了支持这一点,Android提供了一组简单的API

首选项通常是名称-值对。它们可以作为“共享首选项”存储在应用程序中的各种活动中(请注意,目前无法跨流程共享)。或者它可以是特定于某个活动需要存储的内容

共享首选项:共享首选项可由应用程序之外的所有组件(活动、服务等)使用

活动处理的首选项:这些首选项只能在活动中与一起使用,不能由应用程序的其他组件使用

共享首选项:

   int storedPreference = preferences.getInt("storedInt", 0);
   SharedPreferences preferences = getPreferences(MODE_PRIVATE);
   int storedPreference = preferences.getInt("storedInt", 0);
共享首选项是在上下文类的getSharedReferences方法的帮助下管理的。首选项存储在默认文件(1)中,或者您可以指定用于引用首选项的文件名(2)

   SharedPreferences preferences = getPreference(MODE_PRIVATE);
   SharedPreferences.Editor editor = preferences.edit();
   editor.putInt("storedInt", storedPreference); // value to store
   editor.commit();
(1) 下面是指定文件名时获取实例的方式

  public static final String PREF_FILE_NAME = "PrefFile";
  SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
模式\u PRIVATE是首选项的操作模式。这是默认模式,意味着创建的文件将仅由调用应用程序访问。支持的其他两种模式是模式世界可读和模式世界可写。在“世界可读”模式下,其他应用程序可以读取创建的文件,但不能修改它。在模式_WORLD_可写的情况下,其他应用程序也对创建的文件具有写权限

(2) 建议的方法是在默认模式下使用,而不指定文件名:

  SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
最后,拥有preferences实例后,以下是如何从preferences中检索存储的值:

   int storedPreference = preferences.getInt("storedInt", 0);
   SharedPreferences preferences = getPreferences(MODE_PRIVATE);
   int storedPreference = preferences.getInt("storedInt", 0);
要在首选项文件SharedReference.Editor对象中存储值,必须使用。编辑器是SharedReference类的嵌套接口

   SharedPreferences.Editor editor = preferences.edit();
   editor.putInt("storedInt", storedPreference); // value to store
   editor.commit();
编辑器还支持remove()和clear()等方法从文件中删除首选项值

活动首选项:

   int storedPreference = preferences.getInt("storedInt", 0);
   SharedPreferences preferences = getPreferences(MODE_PRIVATE);
   int storedPreference = preferences.getInt("storedInt", 0);
共享首选项可由其他应用程序组件使用。但是,如果您不需要与其他组件共享首选项,并且希望活动具有私有首选项,则可以使用。您可以在活动的getPreferences()方法的帮助下实现这一点。getPreference方法使用getSharedReferences()方法,并将活动类的名称作为首选项文件名

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

   int storedPreference = preferences.getInt("storedInt", 0);
   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的数据存储帖子

有关详细信息,请查看此链接:


对于登录屏幕任务,如存储用户名和密码,您可以使用共享首选项。在这里,我创建了使用共享首选项的自定义方法。调用
savePreferences()
方法并放入您的键和值(因为
savePreferences()
基于XML),同样地使用键调用Load。最后,不要忘了在注销时调用
deletePreferences()

/**
 *   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;
}
/**
*用于获取共享首选项的方法*/
public SharedReferences getPreferences()
{
返回getSharedReferences(,MODE_PRIVATE);
}
/**
*用于保存首选项的方法*/
公共void保存首选项(字符串键、字符串值)
{
SharedReferences SharedReferences=getPreferences();
SharedReferences.Editor=SharedReferences.edit();
编辑器.putString(键,值);
commit();
}
/**
*用于加载首选项的方法*/
公共字符串加载首选项(字符串键)
{
试一试{
SharedReferences SharedReferences=getPreferences();
字符串strSavedMemo=SharedReferences.getString(键“”);
返回stravedmemo;
}捕获(NullPointerException NullPointerException)
{
Log.e(“TelaSketchUtin loadPreferences方法导致的错误”,
“>=======>”+nullPointerException);
返回null;
}
}
/**
*用于删除首选项的方法*/
公共布尔删除首选项(字符串键)
{
SharedReferences.Editor=getPreferences().edit();
editor.remove(key.commit();
返回false;
}

希望这对你有帮助。不要忘记执行+1。

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

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
}
或者,如果