【问题标题】:Android Preferences - How Shareable is Shareable?Android 首选项 - 可共享性如何?
【发布时间】:2012-03-20 20:00:45
【问题描述】:

我正在使用 PreferenceActivity 让 Android 为我的应用处理一些持久的键/值对。

根据Android Preference docs

请注意,保存的首选项只能由创建它们的应用程序访问。

但是,在进一步研究偏好的安全性和权限方面时,我遇到了这样的问题:

Android: Retrieving shared preferences of other application

有些用户说首选项可能是世界可读和可写的,并且他们能够成功地跨应用程序访问它们。

所以我的问题是:

首选项是否在应用程序中不可分割,还是我必须采取预防措施才能做到这一点?

注意:我不是在尝试使用首选项在应用程序之间共享数据。恰恰相反 - 我想知道我的用户设置的任何首选项都是安全的,不会被其他应用程序检查/更改。

【问题讨论】:

标签: android sharedpreferences preferenceactivity


【解决方案1】:

您可以在创建它们时定义与共享首选项相关的模式。 例如,如果您希望设备上的其他应用程序知道它们,您可以将它们设置为“世界可读”或“世界可写”。 因此,您可以使用自己的标志来调整您创建的共享偏好的透明度

【讨论】:

    【解决方案2】:

    从上面的答案和 cmets 来看,在我看来,关于这个主题的 android 开发者文档有点误导。

    我什至发现了另一个地方,其中开发人员文档明确指出无法跨应用访问设置:

    (请注意,无法跨应用程序包共享设置数据——因为您需要一个内容提供者。)

    这里引用上面的引用吧:http://developer.android.com/reference/android/app/Activity.html#SavingPersistentState

    但是@shruti 和@raman-bhatia(谢谢大家!)的回复都支持这样一个事实,即可以将设置配置为可跨应用共享,正如我在问题中引用的 SO 查询一样。

    关键是找到了这个 SO 查询:Difference between getDefaultSharedPreferences and getSharedPreferences,它显示了默认共享首选项文件最初是如何配置为私有的。

    谢谢大家。答案是文档具有误导性,因为偏好可以被强制跨应用共享,但 PreferenceActivity 默认会创建一个安全的共享偏好文件,仅对源自应用的组件可见。

    【讨论】:

      猜你喜欢
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 2012-09-20
      • 2012-09-03
      • 1970-01-01
      相关资源
      最近更新 更多