2010-01-04 10 views
21

I m utilizando 1,5 mi directorio de datos de Android no tiene los permisos de lectura/escrituradirectorio de datos no tiene permiso de lectura/escritura en Android

System.out.println("DAta can write??--->"+Environment.getDataDirectory().canWrite()); 
System.out.println("DAta can read??--->"+Environment.getDataDirectory().canRead()); 

Así que por favor me sugieren cómo proporcionar permisos para el directorio de datos.

Lo que estoy tratando de hacer es crear un archivo y añadir un poco de contenido a ella en el almacenamiento de datos del emulador como la siguiente

private void writeToSDCard() { 
     try { 

      File lroot = Environment.getDataDirectory(); 

      if (lroot.canWrite()){ 
       File lfile = new File(lroot, "samplefile.txt"); 
       FileWriter lfilewriter = new FileWriter(lfile); 
       BufferedWriter lout = new BufferedWriter(lfilewriter); 
       lout.write("XXXXXXXXXXXXXXXXXX"); 
       lout.close(); 
      } 
     } catch (IOException e) { 
      Log.e(m_cTAG, "Could not write file " + e.getMessage()); 
     } 
    } 

Respuesta

64

No se debe buscar en el directorio de datos. Este es un directorio de sistema en el almacenamiento del teléfono, generalmente /data, y su aplicación nunca tendrá permiso para escribir en él.

El directorio donde su aplicación debe escribir los archivos es devuelto por el Context.getFilesDir() method. Será algo así como /data/data/com.yourdomain.YourApp/files.

Si desea escribir en un archivo en el almacenamiento del teléfono, utilice Context.openFileOutput() method.

Si desea la ruta a la tarjeta SD, utilice Environment.getExternalStorageDirectory() method. Para escribir en la tarjeta SD que necesita para dar a su aplicación a los permisos apropiados añadiendo lo siguiente a su Manifiesto:

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

Si usted va a escribir en el SDCard también tendrá que comprobar su estado con el método getExternalStorageState().

Si está almacenando pequeños archivos para hacer con su aplicación, estos pueden ir al almacenamiento del teléfono y no a la tarjeta SD, por lo tanto, utilice los métodos Context.openFileOutput() y Context.openFileInput().

Así que en su código consideran algo así como:

OutputStream os = openFileOutput("samplefile.txt", MODE_PRIVATE); 
BufferedWriter lout = new BufferedWriter(new OutputStreamWriter(os)); 
+0

Aquí se wat m tryng hacer: writeToSDCard private void() {try { \t Archivo lroot = Environment.getDataDirectory(); \t \t if (lroot.canWrite()) { \t Archivo lfile = new Archivo (lroot, "samplefile.txt"); \t FileWriter lfilewriter = new FileWriter (lfile); \t BufferedWriter lout = new BufferedWriter (lfilewriter); \t lout.write ("XXXXXXXXXXXXXXXXXX"); \t lout.close(); \t} catch (IOException e) { \t Log.e (m_cTAG, "No se pudo escribir el archivo" + e.getMessage()); \t} } –

+0

Sí Gracias por su valiosa sugerencia .. :-) –

+0

Gracias esto resolvió mi problema. – specialscope

Cuestiones relacionadas