具有MODE_PRIVATE,MODE_WORLD_READABLE,MODE_WORLD_WRITABLE的Android SharedPreferences

时间:2012-10-31 07:33:27

标签: android

Android中的

SharedPreferences是应用程序的本地,而不是在不同的应用程序之间共享。当我说

SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE);

它表示制作此偏好设置MODE_WORLD_READABLEMODE_WORLD_WRITABLEMODE_PRIVATE

4 个答案:

答案 0 :(得分:37)

getSharedPreferences(String name, int mode)解释为here

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.

更多信息here

编辑 自API 17起,MODE_WORLD_READABLEMODE_WORLD_WRITEABLE已弃用:

  

此常量在API级别17中已弃用。
  创建世界可读文件非常危险,可能会在应用程序中造成安全漏洞。强烈劝阻;相反,应用程序应使用更正式的交互机制,例如ContentProviderBroadcastReceiverService。无法保证此访问模式将保留在文件中,例如在进行备份和还原时。

答案 1 :(得分:11)

首选项存储在文件系统中。该模式定义了谁有权访问您应用的偏好。

简单来说:

  • MODE_PRIVATE是首选项的操作模式。它是默认模式,表示只有调用的应用程序才能访问创建的文件。
  • MODE_WORLD_READABLE其他应用程序中,可以读取已创建的文件,但无法对其进行修改。
  • 如果MODE_WORLD_WRITEABLE其他应用程序也对创建的文件具有写入权限。

推荐的方法是使用默认模式,而不指定文件名

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

答案 2 :(得分:9)

共享首选项也保存在文件系统的文件中。这些模式定义了其他应用程序是否有权读取文件中的分片首选项。

MODE_PRIVATE表示只有创建共享首选项的应用程序才能读取写入首选项

MODE_WORLD_READABLE表示其他应用程序也可以使用共享首选项API读取这些首选项,但不能在此首选项文件中调用值

MODE_WORLD_WRITEABLE表示其他应用程序也可以使用共享首选项API在首选项文件中读取和写入

以下链接也有一些很好的解释和代码示例来解释MODES:

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

答案 3 :(得分:1)

MODE_PRIVATE表示您的应用创建的文件,用于存储只能由您自己的应用访问的应用偏好设置数据。

没有其他应用可以访问该文件。