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.testにありますか.test proj 編集して簡単に取得でき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

このアプリでは別のパッケージ名を使用してください。これにより、別のディレクトリに設定が作成されます。

于 2012-08-22T11:14:15.410 に答える
1

ところで、(質問とは関係ありませんが、とにかく)createPackageContext()メソッドの使い方が間違っていますね。MODE_WORLD_WRITEABLE値が2でフラグに等しいフラグをそこに渡すCONTEXT_IGNORE_SECURITYため、これはロジック、IMHOによって誤って解釈されます。

于 2012-08-22T11:23:22.207 に答える
0

最初のアプリが別のアプリで読み取ることができる SharedPreference を作成する場合は、必ず正しいモードで SharedPreference を作成してください。詳細については、getSharedPreferences()またはPreferenceManagerクラスを参照してください。

于 2012-08-22T11:17:04.943 に答える