我有一个用户登录到webservice(用户名+密码)的应用程序。我需要在某处存储用户的用户名和密码以自动登录(否则他们每次都必须输入用户名+密码)。
我已经在SharedPreferences中存储了用户名+密码,如下所示:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = prefs.edit();
editor.put("username", "the username");
editor.put("password", "the password");
editor.commit();
如果我理解正确,那么共享prefs写入的实际文件无法从其他第三方应用程序访问,对吗?因此可以在这里存储用户名+密码吗?
如果我将设备连接到DDMS,我看不到共享的prefs文件(好)。如果我使用模拟器,我可以看到它们。
由于
答案 0 :(得分:4)
它们通常不应被其他应用程序访问,但在root设备上,可以非常轻松地访问它们。
您可能希望将encrypt/decrypt字符串作为商店并加载它们。
答案 1 :(得分:2)
这是正确的。尽管如此,该文件是一个常规的xml文件,可以被root电话中的任何文件浏览器访问,因此您应该加密您的数据。永远不要认为应用程序不会在root手机中使用。即使用户不这样做,手机也可能总是丢失/被盗,并根据提取信息。
要回答评论中的问题:
要获取SharedPreferences实例(默认实例或任何自定义实例),您需要活动上下文,任何其他应用都无法访问。