Каталог данных не имеет права на чтение и запись в Android

Я использую Android 1.5, у моего каталога данных нет разрешений на чтение и запись

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

Поэтому, пожалуйста, предложите мне предоставить разрешения для каталога данных.

Я пытаюсь создать файл и добавить в него содержимое в хранилище данных эмулятора, как показано ниже.

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

Solutions Collecting From Web of "Каталог данных не имеет права на чтение и запись в Android"

Вы не должны смотреть в каталог данных. Это системный каталог в хранилище телефона – обычно /data – и ваше приложение никогда не получит разрешения на его запись.

Каталог, в котором ваше приложение должно записывать файлы, возвращается методом Context.getFilesDir() . Это будет что-то вроде /data/data/com.yourdomain.YourApp/files .

Если вы хотите записать в файл в хранилище телефона, используйте метод Context.openFileOutput() .

Если вам нужен путь к SDCard, используйте метод Environment.getExternalStorageDirectory() . Чтобы записать на SDCard, вам необходимо предоставить вашему приложению соответствующие разрешения, добавив в свой манифест следующее:

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

Если вы собираетесь писать на SDCard, вам также нужно будет проверить его состояние с помощью getExternalStorageState() .

Если вы храните небольшие файлы, чтобы сделать это с вашим приложением, они могут войти в память телефона, а не в SD-карту, поэтому используйте Context.openFileOutput() и Context.openFileInput() .

Поэтому в вашем коде рассмотрите что-то вроде:

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