我一直在开发一个Android应用程序,通过共享首选项文件与设备上安装的其他应用程序进行交互。
此文件是以MODE.WORLD_READABLE创建的,每个已安装的应用程序都有自己的文件,具有共同定义的名称和属性(更改的是该特定属性的值)。
例如,AppA和AppB应该分别拥有名为“app_shared_file.xml”的共享文件,并具有属性“property_shared_file”。
从我的应用程序中,我想首先访问此文件并读取该属性值,根据该结果,我想创建/更新我的文件。
然而,我在实现这一点方面遇到了一些问题。在Android文档中,我看到:
“检索并保留首选项文件'name'的内容,返回SharedPreferences,通过它可以检索和修改其值。对于相同名称的任何调用者,只返回一个SharedPreferences对象,这意味着他们将看到彼此的编辑结果。”
在读取其他应用程序的共享首选项文件后,当我尝试创建/更新我的文件时,系统不是编辑我的文件,而是使用我之前读取的那个。相反,如果我首先更新我的文件,然后再读取另一个应用程序 - 而不是读取其他文件,正在访问的是我的文件。
你有什么想法吗?
我用来读取共享首选项的代码是[其中packageName是其他应用程序包]:
此文件是以MODE.WORLD_READABLE创建的,每个已安装的应用程序都有自己的文件,具有共同定义的名称和属性(更改的是该特定属性的值)。
例如,AppA和AppB应该分别拥有名为“app_shared_file.xml”的共享文件,并具有属性“property_shared_file”。
从我的应用程序中,我想首先访问此文件并读取该属性值,根据该结果,我想创建/更新我的文件。
然而,我在实现这一点方面遇到了一些问题。在Android文档中,我看到:
“检索并保留首选项文件'name'的内容,返回SharedPreferences,通过它可以检索和修改其值。对于相同名称的任何调用者,只返回一个SharedPreferences对象,这意味着他们将看到彼此的编辑结果。”
在读取其他应用程序的共享首选项文件后,当我尝试创建/更新我的文件时,系统不是编辑我的文件,而是使用我之前读取的那个。相反,如果我首先更新我的文件,然后再读取另一个应用程序 - 而不是读取其他文件,正在访问的是我的文件。
你有什么想法吗?
我用来读取共享首选项的代码是[其中packageName是其他应用程序包]:
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();
提前致谢。