【问题标题】:What is a replacement of deprecated MODE_WORLD_READABLE SharedPreferences in Android?什么是 Android 中已弃用的 MODE_WORLD_READABLE SharedPreferences 的替代品?
【发布时间】:2014-05-14 19:29:56
【问题描述】:

我正在开发 Android 应用程序A,以便另一个B 可以读取ASharedPreferences

android.content.Context 的javadoc 中,关于MODE_WORLD_READABLEMODE_WORLD_WRITEABLE 的内容如下:

此常量在 API 级别 17 中已弃用。创建全局可写 文件非常危险,可能会导致安全漏洞 应用程序。强烈建议不要这样做;相反,应用程序应该 使用更正式的交互机制,例如ContentProviderBroadcastReceiverService

据此,A 应将其SharedPreferencesMODE_PRIVATE 标志一起保存并提供ContentProvider,以便B 可以查询AContentProvider。但是我怎么知道SharedPreferences Uri?

我想这就像content://authority_name/preference_file_name 但这对我不起作用。如果有任何正确的例子,我将不胜感激。

一般来说,是否可以访问其他应用的MODE_PRIVATESharedPreferences

【问题讨论】:

  • 不,无法访问其他应用的 MODE_PRIVATE Sahredpreferences。可以参考链接developer.android.com/reference/android/content/…
  • @Madhu 如果我知道 Provider 的权限和 Preference 的文件名,是否可以将 SharedPreferences 与 ContentProvider 接口?
  • 我们无法将 SharedPreferences 与 ContentProvider 接口
  • 这两个应用都是你自己开发的吗?
  • 使用内容提供程序将值存储在数据库表中,然后您可以从那里获取表的 uri。然后从 App B 访问 uri 中的这些值

标签: android sharedpreferences android-contentprovider android-preferences


【解决方案1】:

如果您的数据不是那么私密,请使用 sdcard 存储。

可以访问其他应用程序的 MODE_PRIVATE Sahredpreferences:它们具有相同的 uid。即AndroidManifest.xml中的相同签名和“sharedUserId”。

【讨论】:

  • 你能详细说明你的答案吗(也许用代码)?情况是我使用SyncAdapter 模式来通知用户更新。但是,通过AbstractThreadedSyncAdapter.onPerformSync() 方法,我无法使用传递给该方法的Context 访问应用程序的默认共享首选项。
  • 当两个应用程序需要存在并在同一设备上运行时,此答案的建议可能会导致新的难以解决的问题...
猜你喜欢
  • 2021-05-26
  • 2016-05-25
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多