2012-08-22 6 views
7

I SharedPreferences einer App über eine andere App zu bearbeiten Ich versuche, mein Code geht soAndroid: Es kann kein Verzeichnis erstellen für SharedPreferences Datei

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(); 
} 

Ich erhalte einen Fehler

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

wo me.test ist mein anderes Projekt in me.test proj Ich kann bearbeiten und abrufen SharedPreferences ohne Schmerzen

Ich teste es auf Nexus S Android 4.0.4 (Samsung), kann mir jemand helfen

+1

Ihr "me.test" -Projekt hat die SharedPreferences mit 'MODE_WORLD_WRITEABLE' erstellt? – WarrenFaith

+0

@ Warren Faith, danke für einen Kommentar. Ich weiß nicht, wie man 'MODE_WORLD_WRITEABLE' mit erstellt, ich habe gerade normales –

+0

Konnte Sie die Art der Ausnahme auch schreiben? – teoREtik

Antwort

1

Verwenden Sie einfach einen anderen Paketnamen in dieser App. Dadurch werden die Einstellungen in einem anderen Verzeichnis erstellt.

0

Wenn Ihre erste App eine SharedPreference erstellen möchte, die von einer anderen App gelesen werden kann, stellen Sie sicher, dass Sie die SharedPreference im richtigen Modus erstellen. Werfen Sie einen Blick auf die getSharedPreferences() oder die PreferenceManager Klasse für weitere Details.

1

Übrigens, (es ist nicht mit der Frage verwandt, aber irgendwie) Sie verwenden falsch createPackageContext() Methode. Sie passieren dort MODE_WORLD_WRITEABLE Flag welcher Wert ist und ist gleich CONTEXT_IGNORE_SECURITY Flag, so würde dies falsch von Logik interpretiert werden, IMHO.

+0

Ich weiß nicht viel über IMHO.meine grundlegende Sache ist, geteilte Vorlieben einer Anwendung von einer anderen Anwendung zu bearbeiten –

+0

So sollten Sie 'SharedPreferences' in der Anwendung erstellen, die es mit' getSharedPreferences (String-Name, int-Modus) '' 'MODE_WORLD_WRITEABLE' 'Modus besitzt, wie @WarrenFaith sagte. – teoREtik

+0

MODE_WORLD_WRITEABLE ist jetzt veraltet –

4

Sie müssen die Berechtigungen in AndroidManifest.xml hinzuzufügen:

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

ich das gleiche Problem mit Ihnen zu haben, und ich löste es mit der obigen Lösung.

+0

Sind Sie sicher, Berechtigungen zum Zugriff auf freigegebene Einstellungen hinzufügen? –

0

Problem - "Android: Konnte Verzeichnis für SharedPreferences-Datei nicht erstellen" wird kommen, wenn Sie bereits gemeinsame Voreinstellung im Projekt erstellt wurden. Also, eine gemeinsame Präferenz ist vorhanden und wieder hinzufügen Sie mit demselben Namen Standardpräferenz. Lösung - Erstellen Sie nur eine gemeinsame Standardvorgabe in der App. Wenn Sie mehr gemeinsame Einstellungen erstellen möchten, erstellen Sie eine gemeinsame Einstellung mit einem bestimmten Namen.

Hinweis - Nur eine gemeinsame Standardvorgabe in einer App.

0

Starten Sie Ihr Samsung-Gerät neu, um dieses Problem zu lösen.

Verwandte Themen