2010-01-04 10 views
21

I m przy użyciu Android 1.5 mojego katalogu danych nie ma uprawnienia do odczytu/zapisukatalogu danych nie ma uprawnienia do odczytu/zapisu w Androidzie

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

Więc proszę sugerować mnie jak zapewnić uprawnienia do katalogu danych.

Co staram się zrobić, to utworzyć plik i dodać do niej treści w pamięci danych emulatora jak poniżej

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

Odpowiedz

64

Nie należy szukać w katalogu danych. To jest katalog systemowy w pamięci telefonu - zwykle /data - a twoja aplikacja nigdy nie będzie miała uprawnień do zapisu do niego.

Katalog, w którym aplikacja ma zapisywać pliki, jest zwracany przez Context.getFilesDir() method. Będzie to coś w rodzaju /data/data/com.yourdomain.YourApp/files.

Jeśli chcesz pisać do pliku w pamięci telefonu, użyj numeru Context.openFileOutput() method.

Jeśli chcesz ścieżkę do karty SD, użyj Environment.getExternalStorageDirectory() method. Napisać do SDCard musisz podać swoją aplikację odpowiednie uprawnienia poprzez dodanie następujących do manifeście:

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

Jeśli masz zamiar napisać do SDCard Trzeba także sprawdzić swój stan metodą getExternalStorageState().

Jeśli przechowujesz małe pliki związane z aplikacją, mogą one zostać zapisane w pamięci telefonu, a nie na karcie SD, więc użyj metod Context.openFileOutput() i Context.openFileInput().

Więc w kodzie rozważyć coś takiego:

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

Tutaj jest wat m tryng zrobić: private void writeToSDCard() {try { \t pliku lroot = Environment.getDataDirectory(); \t \t jeśli (lroot.canWrite()) { \t Plik lfile = nowy Plik (lroot, "samplefile.txt"); \t FileWriter lfilewriter = new FileWriter (lfile); \t BufferedWriter lout = new BufferedWriter (lfilewriter); \t lout.write ("XXXXXXXXXXXXXXXXXX"); \t lout.close(); \t} \t} catch (wyjątek IOException e) { \t Log.e (m_cTAG, "Nie można zapisać pliku" + e.getMessage()); \t} } –

+0

Tak, dziękuję za cenne sugestie .. :-) –

+0

Dzięki temu rozwiązałem mój problem. – specialscope

Powiązane problemy