2010-01-04 27 views
21

Je ne suis pas en utilisant Android 1.5 mon répertoire de données ne possède pas les permissions en lecture/écritureData n'a pas autorisation de lecture/écriture dans Android

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

Alors s'il vous plaît me suggérer comment fournir des autorisations pour le répertoire de données.

Ce que je suis en train de faire est de créer un fichier et ajouter un peu de contenu dans le stockage des données de l'émulateur comme comme ci-dessous

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

Répondre

64

Vous ne devriez pas être à la recherche dans le répertoire de données. Il s'agit d'un répertoire système dans le stockage du téléphone - généralement /data - et votre application n'aura jamais la permission d'y écrire.

Le répertoire dans lequel votre application doit écrire des fichiers est renvoyé par le Context.getFilesDir() method. Ce sera quelque chose comme /data/data/com.yourdomain.YourApp/files. Si vous voulez écrire dans un fichier dans le stockage du téléphone, utilisez le Context.openFileOutput() method.

Si vous souhaitez le chemin d'accès à la carte SD, utilisez Environment.getExternalStorageDirectory() method. Pour écrire au SDCard, vous devez donner votre application les autorisations appropriées en ajoutant ce qui suit à votre Manifest:

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

Si vous allez écrire au SDCard, vous aurez également besoin de vérifier son état avec la méthode getExternalStorageState().

Si vous stockez de petits fichiers à faire avec votre application, ceux-ci peuvent aller dans le stockage du téléphone et non sur la carte SD, utilisez donc les méthodes Context.openFileOutput() et Context.openFileInput().

Donc, dans votre code considèrent quelque chose comme:

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

Voici wat m tryng faire: writeToSDCard private void() {{try \t fichier lroot = Environment.getDataDirectory(); \t \t if (lroot.canWrite()) { \t Fichier lfile = nouveau Fichier (lroot, "fichier_exemple.txt"); \t FileWriter lfilewriter = nouveau FileWriter (lfichier); \t BufferedWriter lout = nouveau BufferedWriter (lfilewriter); \t lout.write ("XXXXXXXXXXXXXXXXXX"); \t lout.close(); \t} \t} catch (IOException e) { \t Log.e (m_cTAG, "Impossible d'écrire le fichier" + e.getMessage()); \t} } –

+0

Oui Merci pour votre précieuse suggestion .. :-) –

+0

Merci cela résolu mon problème. – specialscope