gpt4 book ai didi

android - SharedUserId 访问 SharedPreferences

转载 作者:太空狗 更新时间:2023-10-29 14:28:06 29 4
gpt4 key购买 nike

我有两个应用,包名如下:

  • com.blah.a
  • com.blah.b

他们获得了 sharedUserId“com.blah.shared”。在我设备的/data/data 中,他们都有一个包含数据的文件夹,其中包含 shared_prefs 文件夹和名为的默认 SharedPreferences 文件:

  • com.blah.a_preferences.xml
  • com.blah.b_preferences.xml

我知道两个具有相同 sharedUserId 的应用可以访问彼此的文件。 如何从应用 b 读取应用 a 的 SharedPreferences?

我找到了一个解决方案,但它既不能很好地工作(如果应用程序 a 更新首选项,应用程序 b 仍然读取旧值)也不是很好的代码(可以抛出异常)。

try {
Context c = context.createPackageContext("com.blah.a",
Context.CONTEXT_IGNORE_SECURITY))

aPrefs = PreferenceManager.getDefaultSharedPreferences(c);
} catch (NameNotFoundException e) {
}

感谢您的帮助!

最佳答案

通常,您不需要这样做,sharedUserId 对于生产应用程序来说不是一个好主意。无论如何,这是执行此操作的代码,但您不需要指定 IGNORE_SECURITY。如果您的应用程序具有相同的 UID,它们应该能够读取彼此的(私有(private))文件。至于异常,只有包不存在才会抛出异常。您可以检查它是否存在,并且仅在它存在时才执行代码(即安装了其他应用程序)。可能有一些缓存,因此您应该在每次需要时加载首选项。

关于android - SharedUserId 访问 SharedPreferences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9815564/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com