SharedPreferences
在 Android 中是本地应用程序,而不是在不同应用程序之间共享。当我说
SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE);
做出这种偏好意味着什么MODE_WORLD_READABLE
,MODE_WORLD_WRITABLE
或者
MODE_PRIVATE
?
SharedPreferences
在 Android 中是本地应用程序,而不是在不同应用程序之间共享。当我说
SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE);
做出这种偏好意味着什么MODE_WORLD_READABLE
,MODE_WORLD_WRITABLE
或者
MODE_PRIVATE
?
getSharedPreferences(String name, int mode)
在这里解释
MODE_PRIVATE: File creation mode: the default mode, where the created file can only be accessed by the calling application (or all applications sharing the same user ID).
MODE_WORLD_READABLE: File creation mode: allow all other applications to have read access to the created file.
MODE_WORLD_WRITEABLE : File creation mode: allow all other applications to have write access to the created file.
更多信息在这里
编辑从 API 17 开始,不推荐使用MODE_WORLD_READABLE
and MODE_WORLD_WRITEABLE
:
此常量在 API 级别 17 中已弃用。
创建世界可读文件非常危险,并且可能会导致应用程序中的安全漏洞。强烈建议不要这样做;相反,应用程序应该使用更正式的交互机制,例如ContentProvider
、BroadcastReceiver
和Service
。无法保证此访问模式将保留在文件上,例如在进行备份和恢复时。
首选项存储在文件系统中。该模式定义了谁可以访问您的应用程序的首选项。
简单来说:
MODE_PRIVATE
是首选项的操作模式。这是默认模式,意味着创建的文件只能由调用应用程序访问。MODE_WORLD_READABLE
其他应用程序中可以读取创建的文件但不能修改它。MODE_WORLD_WRITEABLE
其他应用程序也对创建的文件具有写权限。推荐的方式是使用默认模式,不指定文件名
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
共享偏好也保存在文件系统中的文件中。这些模式定义了其他应用程序是否有权读取文件中的分片首选项。
MODE_PRIVATE
意味着只有创建共享首选项的应用程序才能读写首选项
MODE_WORLD_READABLE
意味着其他应用程序也可以使用共享首选项 API 读取这些首选项,但不能在此首选项文件中写入值
MODE_WORLD_WRITEABLE
意味着其他应用程序也可以使用共享首选项 API 读取和写入首选项文件
以下链接也有一些很好的解释和代码示例来解释模式:
http://thedevelopersinfo.com/2009/11/25/getting-sharedpreferences-from-other-application-in-android/
http://chrisrisner.com/Accessing-the-Shared-Preferences-of-a-Different-Application-in-Android
MODE_PRIVATE 是指由您的应用程序创建的用于存储应用程序偏好数据的文件,该文件只能由您自己的应用程序访问。
没有其他应用程序能够访问该文件。