2012-04-18 91 views
21

我在我的应用程序中创建登录。用户输入他的信息我发送到Web服务检查并获得他的ID。现在我需要将它保存在我的应用程序的某个地方,以便检查他是否已登录。在应用程序设置中保存用户信息

那么这个信息应该保存在哪里?我知道每个应用程序都有它的设置,所以应该有这个信息?也许有人可以给我更多的信息,这是怎么做的。

谢谢。

我发现这个职位: What is the most appropriate way to store user settings in Android application

我相信我的问题是重复的。但如果你有更多的分享内容,那将会很好。

回答

54

第一。

SharedPreferences settings = getSharedPreferences("UserInfo", 0); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("Username",txtUname.getText().toString()); 
editor.putString("Password",txtPWD.getText().toString()); 
editor.commit(); 

,然后从下面的代码获得SharedPreferences

SharedPreferences settings = getSharedPreferences("UserInfo", 0); 
txtUname.setText(settings.getString("Username", "").toString()); 
txtPWD.setText(settings.getString("Password", "").toString()); 
+1

对于任何想了解compatiility,这是受支持在所有当前API版本中(在API V1中添加)。 SharedPreferences文档可以在这里找到:http://developer.android。com/reference/android/content/SharedPreferences.html – JakeJ 2014-01-23 15:45:35

+10

对于任何想知道安全性的人,请勿将您的用户密码存储在SharedPreferences中。 – 2014-08-01 12:23:09

+5

你永远不应该在应用程序或数据库中保存普通密码。不用保存纯文本,您可以对其进行哈希处理。当你需要验证给定的用户密码时,你可以用同样的方法对它进行哈希处理,并比较哈希值。这种方式比纯文本好得多。 – RoDo 2016-01-19 08:37:14

7

您可以使用SharedPreferences

从引用(taken from documentation)有些代码:

像在使用此代码SharedPreferences UNAME &密码都保存用户信息的
public class Calc extends Activity { 
    public static final String PREFS_NAME = "MyPrefsFile"; 

    @Override 
    protected void onCreate(Bundle state){ 
     super.onCreate(state); 
     . . . 

     // Restore preferences 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     boolean silent = settings.getBoolean("silentMode", false); 
     setSilent(silent); 
    } 

    @Override 
    protected void onStop(){ 
     super.onStop(); 

     // We need an Editor object to make preference changes. 
     // All objects are from android.context.Context 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putBoolean("silentMode", mSilentMode); 

     // Commit the edits! 
     editor.commit(); 
    } 
} 
22

答案是使用应用程序级或共享偏好

我想你可以轻松地搜索的Application ClassSharedPreferencesSQLite Database为例

所以我提到我在哪里使用的选项

Application Class

当我什么(VAR,阵列,列表,对象)为Application..and的寿命(仅仅只存储当它接近了针对Android强制关闭)我使用应用程序类。

SharedPreferences

我用这个当我喜欢的ID,令牌,用户名,国旗一些短信息,我想保存,只要在Device..and应用其余需要使用这些信息,每次我开始应用..

SQLite Database

当在记录格式(行 - 列)一个批量数据我用它在数据库中存储,使其成为易于保存,retrive和操纵。

0

如果用户设定清除应用程序数据 - >应用程序管理器 - >应用程序 - >保存在共享偏好清晰的数据

那么所有的数据均会移除

+1

真的吗?哇谢谢指出。我不知道这是否也适用于SQLite数据库 – MobileMon 2014-01-03 19:14:43

+2

是的,它的确认,数据库也被抹去了。确认对话框告诉我所有“文件,设置,帐户,数据库等”将被永久删除。每天学些新东西... – MobileMon 2014-01-03 19:23:26

相关问题