加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 无法访问Honeycomb中的“世界可读”首选项

发布时间:2020-12-15 02:26:02 所属栏目:Java 来源:网络整理
导读:我有一个免费的游戏,我正在制作付费版本.免费游戏在我以MODE_WORLD_READABLE模式创建的共享首选项文件中存储整数高分.如果安装了免费版本,付费版本需要复制此分数. 我正在使用的代码如下: Context c = paidContext.createPackageContext("my.app.packagenam
我有一个免费的游戏,我正在制作付费版本.免费游戏在我以MODE_WORLD_READABLE模式创建的共享首选项文件中存储整数高分.如果安装了免费版本,付费版本需要复制此分数.

我正在使用的代码如下:

Context c = paidContext.createPackageContext("my.app.packagename",Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences prefs = c.getSharedPreferences(SHARED_PREF_FILENAME,Context.MODE_WORLD_READABLE);

第一行创建免费应用程序的上下文(如果存在)(否则会出现异常).第二行获取共享首选项文件.然后我可以使用prefs.getInt来获得高分.

问题:这在Android 1.5,2.1,2.3等中运行得很好,但它在Android 3.0或3.1模拟器中对我不起作用.上面的代码运行但getInt始终返回默认值.

这是一个错误吗? Honeycomb的一个特色?是否有一些我不知道的应用权限?我该如何进一步诊断?

解决方法

虽然有帮助,罗马对这个问题的评论并未提供答案.为了扩展它,Android不保证可以跨进程访问首选项;实际上,文档(在 SharedPreferences的顶部)明确指出不支持进程间访问(即使它有效).通过使用不同的证书对应用程序进行签名,您可以确保应用程序无法在相同的进程中运行,这是Android的沙盒方法.

对于它的价值,我最初尝试将SharedPreferences与MODE_WORLD_READABLE一起用作在两个不同签名的应用程序之间访问数据的方法.我最终遇到了问题,因为某些情况下进程间读取不起作用(它似乎是一个操作顺序的事情).相反,我首先实现了我应该做的事情,即使用Service AIDL实现的进程间通信(IPC).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读