【问题标题】:Is SharedPreferences not accessible to other applications?其他应用程序无法访问 SharedPreferences 吗?
【发布时间】:2011-06-07 15:40:24
【问题描述】:

我有一个用户登录到网络服务的应用程序(用户名 + 密码)。我需要将用户的用户名和密码存储在某个地方以自动登录(否则他们每次都必须输入用户名和密码)。

我已将用户名 + 密码存储在 SharedPreferences 中,如下所示:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = prefs.edit();
editor.put("username", "the username");
editor.put("password", "the password");
editor.commit();

如果我理解正确,其他第三方应用程序无法访问共享首选项写入的实际文件,对吗?因此可以在这里存储用户名+密码吗?

如果我将设备连接到 DDMS,我看不到共享的 prefs 文件(很好)。如果我使用模拟器,我可以看到它们。

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    它们通常不应该被其他应用程序访问,但在有根设备上它们可以很容易地访问。

    您可能希望encrypt/decrypt 字符串作为您的存储并加载它们。

    【讨论】:

    • 谢谢 - 我似乎在文档中找不到任何说它只能由您的应用程序访问的内容(在非 root 手机上)。你见过这样的事吗?
    • @user 获取一个 SharedPreferences 实例(默认的或任何自定义的)你需要 Activity 上下文,这是任何其他应用程序都无法访问的。
    【解决方案2】:

    没错。尽管如此,该文件是一个常规的 xml 文件,任何文件浏览器都可以在有根手机中访问它,因此无论如何您都应该加密您的数据。永远不要假设该应用程序不会在有根手机中使用。即使用户不这样做,手机也总是会丢失/被盗并获取信息。

    回答评论中的问题:

    要获取 SharedPreferences 实例(默认或任何自定义实例),您需要 Activity 上下文,任何其他应用程序都无法访问它。

    【讨论】:

    • +1 我不认为打字更快,你只是打字更多;)
    猜你喜欢
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多