我一直在开发一个 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();
提前致谢。