2012-08-22 16 views
7

Estoy tratando de editar SharedPreferences de una aplicación a través de otra aplicación, el código es el siguienteAndroid: No se pudo crear el directorio para el archivo 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(); 
} 

estoy consiguiendo un error

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

donde me.test es mi otro proyecto en me.test proj puedo editar y recuperar SharedPreferences sin ningún problema

Lo estoy probando en Nexus S Android 4.0.4 (Samsung), ¿alguien me puede ayudar

+1

Su proyecto "me.test" ha creado SharedPreferences con 'MODE_WORLD_WRITEABLE'? – WarrenFaith

+0

@ WarrenFaith, gracias por su comentario. No sé cómo crear 'MODE_WORLD_WRITEABLE' con, acabo de crear normal –

+0

¿Podría escribir también el tipo de excepción? – teoREtik

Respuesta

1

Simplemente use un nombre de paquete diferente en esta aplicación. Eso creará las preferencias en un directorio diferente.

0

Si su primera aplicación desea crear una SharedPreference que pueda leer otra aplicación, asegúrese de crear SharedPreference con el modo correcto. Eche un vistazo a la clase getSharedPreferences() o PreferenceManager para más detalles.

1

Por cierto, (no está relacionado con la pregunta, pero de ninguna manera) se usa erróneamente el método createPackageContext(). Pase indicador MODE_WORLD_WRITEABLE cuyo valor es y es igual a CONTEXT_IGNORE_SECURITY indicador, por lo que esto sería interpretado incorrectamente por lógica, en mi humilde opinión.

+0

No sé mucho acerca de mi humilde opinión.lo básico es editar las preferencias compartidas de una aplicación desde otra aplicación –

+0

Por lo tanto, debe crear 'SharedPreferences' en la aplicación que lo posee con' getSharedPreferences (String name, int mode) 'usando el modo' MODE_WORLD_WRITEABLE' como @WarrenFaith dijo. – teoREtik

+0

MODE_WORLD_WRITEABLE está en desuso ahora –

4

Es necesario agregar los permisos en su AndroidManifest.xml:

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

Tengo el mismo problema con usted, y yo resuelto con la solución anterior.

+0

¿Estás seguro, agrega permisos para acceder a las preferencias compartidas? –

0

Problema: "Android: no se pudo crear el directorio para el archivo SharedPreferences" vendrá cuando ya se haya creado una preferencia compartida predeterminada en el proyecto. Entonces, existe una preferencia compartida y, nuevamente, está agregando con la preferencia predeterminada del mismo nombre. Solución: cree solo una preferencia compartida predeterminada en la aplicación. Si desea crear más preferencias compartidas, cree preferencias compartidas con algún nombre.

Nota: solo una preferencia compartida predeterminada en una aplicación.

0

Reinicie su dispositivo Samsung para resolver este problema.

Cuestiones relacionadas