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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |