【发布时间】:2012-09-11 19:05:10
【问题描述】:
我一直在开发一个 Android 应用程序,它通过 sharedpreference 文件与安装在设备上的其他应用程序进行交互。
此文件被创建为 MODE.WORLD_READABLE 并且每个已安装的应用程序都有自己的文件,该文件具有共同定义的名称和属性(更改的是该特定属性的值)。
例如,AppA 和 AppB 应该各自拥有一个名为“app_shared_file.xml”的共享文件,并带有属性“property_shared_file”。
我想从我的应用程序中首先访问该文件并读取该属性值,并根据该结果创建/更新我的。
不过,我在实现这一目标时遇到了一些问题。在 Android 文档中,我看到:
检索并保存首选项文件“名称”的内容, 返回一个 SharedPreferences ,您可以通过它检索和 修改其值。 SharedPreferences 对象只有一个实例 返回给同名的所有调用者,这意味着他们将看到 彼此的编辑一经完成。
在阅读了其他应用程序共享首选项文件后,当我尝试创建/更新我的系统而不是编辑我的系统时,我正在使用我之前阅读过的系统。如果相反,我先更新我的应用程序,然后再阅读另一个应用程序 - 而不是阅读另一个应用程序,正在访问的是我的应用程序。
有什么想法吗?
我用于读取共享首选项的代码是 [其中 packageName 是另一个应用程序 pckg]:
Context con = context.createPackageContext(packageName, Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences pref = con.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_WORLD_READABLE);
pref.getBoolean(SHARED_PREF_PROP, false);
我用于在应用程序共享首选项中编写的代码是:
SharedPreferences prefs= getSharedPreferences(SHARED_PREF_NAME, context.MODE_WORLD_READABLE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(SHARED_PREF_PROP, value);
editor.commit();
提前致谢。
【问题讨论】: