我有一个用户登录到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文件(好) . 如果我使用模拟器,我可以看到它们 .
谢谢
2 回答
它们通常不应该被其他应用程序访问,但是在root设备上,它们可以非常容易地访问 .
您可能希望将字符串encrypt/decrypt作为商店并加载它们 .
那是正确的 . 尽管如此,该文件是一个常规的xml文件,可以被root电话中的任何文件浏览器访问,因此您应该加密数据 . 永远不要认为应用程序不会在root手机中使用 . 即使用户不这样做,手机也总是丢失/被盗并根植以提取信息 .
要在评论中回答这个问题:
要获取SharedPreferences实例(默认实例或任何自定义实例),您需要活动上下文,这是任何其他应用程序都无法访问的 .