我正在尝试通过另一个应用编辑一个应用的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.test
是我的另一个项目
在me.test proj中,我可以无痛地编辑和检索SharedPreferences
我在Nexus S android 4.0.4(三星)上测试它,任何人都可以帮助我
答案 0 :(得分:3)
您需要在AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
我遇到了同样的问题,我用上述解决方案解决了这个问题。
答案 1 :(得分:1)
只需在此应用中使用其他套餐名称即可。这将在不同的目录中创建首选项。
答案 2 :(得分:1)
顺便说一句,(它与问题无关,但无论如何)你错误地使用了createPackageContext()
方法。你传递MODE_WORLD_WRITEABLE
标志,其值为 2 并且等于CONTEXT_IGNORE_SECURITY
标志,因此这将被逻辑错误地解释,恕我直言。
答案 3 :(得分:0)
如果您的第一个应用想要创建可由其他应用读取的SharedPreference,请确保使用正确的模式创建SharedPreference。有关更多详细信息,请查看getSharedPreferences()或PreferenceManager类。
答案 4 :(得分:0)
问题 - &#34; Android:无法为SharedPreferences文件创建目录&#34;当您已在项目中创建默认共享首选项时,将会出现。 因此,存在一个共享首选项,并且再次添加相同名称的默认首选项。 解决方案 - 在应用中仅创建一个默认共享首选项如果您想创建更多共享首选项,请使用某个名称创建共享首选项。
注意 - 一个应用中只有一个默认的共享首选项。
答案 5 :(得分:0)
在我的情况下,重启三星设备解决了同样的问题。