2012-10-31 4 views
2

J'essaye d'écrire un programme d'androïde pour accepter l'entrée, puis écrire les données dans un fichier sur le stockage interne de mon téléphone. Lorsque j'exécute mon programme sur l'émulateur, il crée un fichier comme je le souhaite, mais lorsque j'essaie de l'exécuter sur mon téléphone, le fichier ne semble pas être créé. J'ai regardé autour de ce site et je n'arrive pas à trouver une solution à mon problème n'importe où (quelques-uns similaires, mais rien qui fonctionne pour moi) j'espérais que vous pourriez me donner des conseils sur ce que je Je fais mal.Le programme Android écrit à l'émulateur mais pas le téléphone

FileOutputStream fos = null; 
String x = "Sample String"; 
    try{ 
      fos = openFileOutput("answers.txt", MODE_PRIVATE); 
      fos.write(x.getBytes()); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     }  

    try { 
      fos.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
    } 

Sur l'émulateur, je peux trouver le fichier dans DDMS à "data/data/com.example.helloandroid/fichiers/answers.txt". Sur le téléphone, si j'essaie d'ouvrir le dossier de données dans DDMS, il montre qu'il s'agit d'un répertoire vide. Je l'ai déjà ajouté dans cette ligne à mon manifeste:

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

Je ne peux pas sembler penser à autre chose que je pourrais faire mal. Merci d'avance pour l'aide, c'est apprécié.

+1

Vous ne pouvez pas accéder à votre répertoire interne de votre téléphone à moins que vous l'ayez rooté. – Wenhui

Répondre

0

Votre code est correct, mais comme d'autres l'ont indiqué, DDMS dans Eclipse n'a pas l'accès correct au stockage interne, qui est où/données/données vit. Vous pouvez trouver une référence aux différents types de stockage Android au http://developer.android.com/guide/topics/data/data-storage.html

Une façon d'accéder est de rooter votre appareil.

Une autre méthode consiste à installer une build userdebug.

Le moyen le plus simple est cependant via l'option run-as non documentée de adb. Cela vous permet d'accéder aux fichiers appartenant à votre application, même s'ils sont stockés en interne.

Pour vérifier que le fichier qui vous intéresse est en cours de création, tapez la ligne de commande:

adb shell run-as com.example.helloandroid ls -l /data/data/com.example.helloandroid/files/ 

Pour obtenir le contenu d'un fichier spécifique, tapez, également à la ligne de commande:

adb shell run-as com.example.helloandroid cat /data/data/com.example.helloandroid/files/answers.txt 
+0

Merci pour la réponse claire et les exemples! –

0

Tout est correct avec votre code, la seule raison pour laquelle vous ne pouvez pas voir le fichier sur votre téléphone est: Votre téléphone n'est pas root! Racine ton téléphone puis utilise simplement RootExplorer (ou n'importe quelle autre application) pour voir ton résultat dans le même répertoire que l'émulateur! à côté de cela pourquoi ne pas imprimer le texte? pour vous assurer que votre fichier est créé après fos.close() ajoutez bufferReader et essayez de mettre les données dans String, puis imprimez-le! alors vous pouvez voir le résultat dans LogCat

Questions connexes