El directorio de datos no tiene permiso de lectura / escritura en Android

Estoy usando Android 1.5 mi directorio de datos no tiene los permisos de lectura / escritura

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

Así que sugiéreme cómo proporcionar permisos para el directorio de datos.

Lo que bash hacer es crear un archivo y agregarle contenido en el almacenamiento de datos del emulador, como se muestra a continuación.

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

No deberías mirar 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 en el que su aplicación debe escribir los archivos es devuelto por el método Context.getFilesDir() . Será algo así como /data/data/com.yourdomain.YourApp/files .

Si desea escribir en un archivo en el almacenamiento del teléfono, use el método Context.openFileOutput() .

Si desea la ruta a la SDCard, utilice el método Environment.getExternalStorageDirectory() . Para escribir en la SDCard, deberá otorgarle a su aplicación los permisos correspondientes agregando lo siguiente a su Manifiesto:

  

Si vas a escribir en la tarjeta SD, también deberás verificar su estado con el método getExternalStorageState() .

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

Entonces, en tu código, considera algo como:

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