9

我正在尝试SharedPreferences通过另一个应用程序编辑一个应用程序,我的代码是这样的

try {
Context plutoContext = getApplicationContext().createPackageContext("me.test",Context.MODE_WORLD_WRITEABLE);
SharedPreferences plutoPreferences = PreferenceManager.getDefaultSharedPreferences(plutoContext);
Editor plutoPrefEditor = plutoPreferences.edit();
plutoPrefEditor.putString("country", "India");
plutoPrefEditor.commit();
}

我收到一个错误

E/SharedPreferencesImpl( 304): Couldn't create directory for SharedPreferences file /data/data/me.test/shared_prefs/me.test_preferences.xml

我在me.testme.test 项目中的另一个项目在哪里我可以轻松地编辑和检索SharedPreferences

我正在 Nexus S android 4.0.4 (Samsung) 上对其进行测试,任何人都可以帮助我

4

6 回答 6

4

您需要在 AndroidManifest.xml 中添加权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

我和你有同样的问题,我用上面的方法解决了。

于 2015-06-16T13:35:14.013 回答
1

顺便说一句,(它与问题无关,但无论如何)您错误地使用了createPackageContext()方法。您在那里传递MODE_WORLD_WRITEABLE值为2且等于CONTEXT_IGNORE_SECURITYflag 的标志,因此这将被逻辑错误地解释,恕我直言。

于 2012-08-22T11:23:22.207 回答
1

只需在此应用程序中使用不同的包名称。这将在不同的目录中创建首选项。

于 2012-08-22T11:14:15.410 回答
0

如果您的第一个应用程序想要创建可由另一个应用程序读取的 SharedPreference,请确保使用正确的模式创建 SharedPreference。查看getSharedPreferences()PreferenceManager类以获取更多详细信息。

于 2012-08-22T11:17:04.943 回答
0

问题 - 当您已经在项目中创建了默认共享首选项时,将会出现“Android:无法为 SharedPreferences 文件创建目录”。因此,存在一个共享首选项,并且您再次添加同名默认首选项。解决方案 - 在应用程序中仅创建一个默认共享首选项。如果您想创建更多共享首选项,然后使用某个名称创建共享首选项。

注意 - 一个应用程序中只有一个默认共享首选项。

于 2016-02-08T10:24:15.293 回答
0

在我的情况下,重新启动三星设备解决了同样的问题。

于 2017-08-11T15:04:16.940 回答