共享首选项可以是私人的吗?

Posted

技术标签:

【中文标题】共享首选项可以是私人的吗?【英文标题】:Can Shared Preferences be private? 【发布时间】:2011-08-21 05:54:16 【问题描述】:

仅从名称上,我猜Shared Preferences 是......在应用程序之间共享? 也就是说,即使我的应用程序定义并创建了它们,android 上的任何应用程序都可以访问它们。这是正确的吗?

(如果这不正确,那么为什么数据存储开发指南强调 Internal Storage 为“存储私有数据”?)

如果这是正确的,我是否可以修改此默认行为以使首选项仅在我定义和创建它的应用程序中可见?

如果是这样,我该怎么做?

【问题讨论】:

【参考方案1】:

SharedPreferences 默认是私有的。它们在您应用的组件之间共享。

【讨论】:

【参考方案2】:

如果我是正确的,您可以通过调用将其存储为私有

getSharedPreferences(yourfile, MODE_PRIVATE);


public static final int MODE_PRIVATE 

自:API 级别 1 文件创建模式:默认模式,创建的文件只能被调用应用程序(或所有共享相同用户ID的应用程序)访问。

另见:

MODE_WORLD_READABLE
MODE_WORLD_WRITEABLE 
Constant Value: 0 (0x00000000) 

【讨论】:

【参考方案3】:

Context 类中的 getSharedPreferences 有两个参数,String 名称和 int 模式。模式确定共享首选项是否是私有的。 Context.getSharedPreferences

【讨论】:

以上是关于共享首选项可以是私人的吗?的主要内容,如果未能解决你的问题,请参考以下文章

公共共享首选项导致应用程序崩溃

如何保护 Android 共享首选项?

在共享首选项中获取文件大小

Firestore 查询变量以填充共享首选项

共享首选项存储在哪里?

共享首选项保存和检索数据