Java 使用Android SharedReferences或内部存储器在本地存储EditText字段的值

Java 使用Android SharedReferences或内部存储器在本地存储EditText字段的值,java,android,sdk,android-ndk,Java,Android,Sdk,Android Ndk,我目前正在大学里做一个项目,我们正在为学生们创建一个应用程序 该应用程序的一部分是方便访问学生电子邮件,因为我们目前的大学网站有点到处都是 基本上,我试图做的是存储一个用户的电子邮件和密码,他们输入到我的编辑文本 仅当用户选择存储数据的选项时,才应存储数据 此外,如果用户已经存储了数据,则应跳过登录页面,直接进入Webview 有没有人有任何关于如何做到这一点的例子或提示 我研究了几种不同的方法,但没有一种解释看起来很直接,很多教程都使用了我不知道如何转换的值 *请注意,我对安卓系统的开发还比较

我目前正在大学里做一个项目,我们正在为学生们创建一个应用程序

该应用程序的一部分是方便访问学生电子邮件,因为我们目前的大学网站有点到处都是

基本上,我试图做的是存储一个用户的电子邮件和密码,他们输入到我的编辑文本

仅当用户选择存储数据的选项时,才应存储数据

此外,如果用户已经存储了数据,则应跳过登录页面,直接进入Webview

有没有人有任何关于如何做到这一点的例子或提示

我研究了几种不同的方法,但没有一种解释看起来很直接,很多教程都使用了我不知道如何转换的值

*请注意,我对安卓系统的开发还比较陌生,因为我今年才开始使用安卓系统

谢谢大家!


T.J.

您可以将其保存到SharedReference中。您可以这样做:

/** Constant to identify your sharedPref */
public static final String MY_SHARED_PREFERENCES    = "mySharedPrefInstance";
public static final String USER_TAG                 = "sharedPrefsUserTag";

// Get shared preferences
SharedPreferences sharedPref = getSharedPreferences(MY_SHARED_PREFERENCES, MODE_PRIVATE);

// Check if sharedPreferences already contain this user
if (sharedPref.getString(USER_TAG) == textView.gettext()) {
    // The user is already saved
} else {
    // Save a string obj
sharedPref.edit().putString(USER_TAG, editTextUser.getText());
// Save password too
sharedPref.edit().putString(PWD_TAG, editTextPwd.getText());

// Maybe, you would to encrypt the pwd (I recommend this) 
// So, for example:
sharedPref.edit().putString(PWD_TAG, MD5( editTextPwd.getText() ) );

// Commit changes
sharedPref.commit();

}

/** Encrypt params string with MD5 algorithm */
public static String MD5(String md5) {
    try {
        java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
        byte[] array = md.digest(md5.getBytes());
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < array.length; ++i) {
            sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
        }
        return sb.toString();
    } catch (java.security.NoSuchAlgorithmException e) { }
    return null;
}
/**用于标识SharedRef的常量*/
公共静态最终字符串MY_SHARED_PREFERENCES=“mysharedpreinstance”;
公共静态最终字符串USER_TAG=“sharedPrefsUserTag”;
//获取共享首选项
SharedReferences SharedReferences=GetSharedReferences(我的共享首选项,模式为私有);
//检查SharedReferences是否已包含此用户
if(sharedPref.getString(用户标签)=textView.gettext()){
//用户已被保存
}否则{
//保存字符串obj
sharedPref.edit().putString(用户标签,editTextUser.getText());
//也保存密码
sharedPref.edit().putString(PWD_标记,editTextPwd.getText());
//也许,您需要加密pwd(我建议这样做)
//例如:
sharedPref.edit().putString(PWD_标记,MD5(editTextPwd.getText());
//提交更改
提交();
}
/**用MD5算法加密参数字符串*/
公共静态字符串MD5(字符串MD5){
试一试{
java.security.MessageDigest md=java.security.MessageDigest.getInstance(“MD5”);
字节[]数组=md.digest(md5.getBytes());
StringBuffer sb=新的StringBuffer();
对于(int i=0;i
如果你提供你的代码,它很容易帮助你更好!
希望有帮助。

最好在设备上使用SQLite数据库。这样,如果应用程序根据需要进行扩展,则可以通过相应地添加表或列来轻松扩展它。然后还可以使用它存储多个帐户,以便您可以对设备本身的登录进行验证

请看以下示例,以获取使用SQLite数据库的帮助:

如果你先看看Android Hive,它会很好地解释它是如何工作的,就像Vogella向你展示了如何在你的代码中实现它一样