我正在使用PreferenceActivity让Android为我的应用程序处理一些持久的键/值对。
请注意,保存的首选项只能由创建它们的应用程序访问。
但是,在进一步研究偏好的安全性和权限方面时,我遇到了类似这样的问题:
Android: Retrieving shared preferences of other application
其中一些用户表示偏好可能是世界可读的,并且可以在世界范围内写入,并且他们可以成功地跨应用程序访问它们。
所以我的问题是:
不同应用程序中的首选项是否无法访问,或者我是否必须采取预防措施才能实现这些首选项?
注意:我不是试图使用偏好来在应用之间共享数据。恰恰相反 - 我想知道我的用户设置的任何偏好都不会被其他应用程序检查/更改。
答案 0 :(得分:2)
从上面的答案和评论中,我认为关于这个主题的android开发者文档有点误导。
我甚至发现另一个地方,开发者文档明确指出不能跨应用程序访问设置:
(请注意,无法跨应用程序包共享设置数据 - 因此您需要内容提供商。)
参考上面引用它:http://developer.android.com/reference/android/app/Activity.html#SavingPersistentState
但是来自@shruti和@ raman-bhatia(感谢大家!)的回复都支持这样的事实:设置可以配置为在应用程序之间共享,我在问题中引用的SO查询也是如此。
关键是找到了这个SO查询:Difference between getDefaultSharedPreferences and getSharedPreferences,它显示了默认共享首选项文件最初是如何配置为私有的。
感谢所有人。答案是文档具有误导性,因为首选项可以强制在应用程序之间共享,但PreferenceActivity默认情况下会创建一个安全的共享首选项文件,该文件只对应用程序的组件可见。
答案 1 :(得分:0)
您可以在创建共享首选项时定义与共享首选项关联的模式。 例如,如果您希望设备上的其他应用程序了解它们,您可以将它们设置为“World Readable”或“World Writable”。 因此,您可以使用自己的标志来调整您创建的共享首选项的透明度