2011-04-05 4 views
1

J'ai un fichier dans le /data/data<package name>/files/settings.dat et je veux stocker/copier ce fichier dans la carte SD, le fichier est bien lu mais en essayant de le copier sur la carte SD, j'ai un exception: sdacrd n'est pas monté. J'ai ajouté la bonne ligne au fichier androidmanifest.xml et ajouté une carte SD virtuelle dans l'émulateur. -sdcard /Users/Alaeddine/Documents/workspace/android_sdcard code:Pas de carte SD montée lors du stockage d'un fichier dans la carte SD

public void transfer(){ 
    File sdCard = Environment.getExternalStorageDirectory(); 
    if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) 
    { 
     Log.d("Carburant", "Sdcard was not mounted !!"); 
    } 
    else 
    { 
     File nmea_file; 
     File root = Environment.getExternalStorageDirectory(); 
     FileWriter nmea_writer = null; 
     try { 
      nmea_file = new File(root,"settings.dat"); 
      if(!nmea_file.exists()) { 
        Log.w("Carburant", "File Doesn't Exists!"); 
        nmea_file.createNewFile(); 
       } 
    copyfile(nom,sdCard.getAbsolutePath() + nmea_file); 
     } 
     catch (IOException e) 
     { 
      Log.w("Carburant", "Unable to write", e); 
     } 
     finally 
     { 
      if (nmea_writer != null) 
      { 
       try 
       { 
        nmea_writer.close(); 
       } 
       catch (IOException e) 
       { 
        Log.w("Carburant", "Exception closing file", e); 
       } 
      } 
     } 
    } 

} 

Comment puis-je résoudre ce problème? Nous vous remercions de votre aide.

+0

Etes-vous sûr que vous ne l'avez pas monté la carte SD à votre ordinateur lorsqu'il est branché et oublié de le démonter lors de l'exécution de votre application? Je fais ça parfois et je l'oublie ... Edit: Oups désolé didnt réalisé que vous utilisiez l'émulateur. Vous pouvez aller dans les paramètres de l'émulateur et vérifier que la carte SD est montée. Si cela ne fonctionne pas, recherchez et créez une carte SD virtuelle sur l'émulateur à partir de la ligne de commande. – DRiFTy

+1

le titre de la question dit "permission refusée" mais votre texte dit "sdacrd n'est pas monté". Pouvez-vous dire exactement ce que l'erreur est s'il vous plaît? –

+0

@ dave.c: vous avez raison, j'ai édité le titre. – androniennn

Répondre

1

Avez-vous défini en fait une carte SD dans l'émulateur du tout? Vous devez le définir lors de la création de l'AVD dans l'application AVD Manager (mais vous pouvez modifier un AVD existant et ajouter une carte SD ultérieurement).

Sur unix vous pouvez démarrer le gestionnaire AVD via

$ android 

étant donné que le dossier android-sdk/outils est dans votre chemin.

Voir aussi http://developer.android.com/guide/developing/devices/index.html pour cela.

+0

@Heiko Rupp: oui je pense que cette commande ajoute une carte SD! je vérifie dans les settings-Storage et elle indique tout indisponible, donc il y a pas sdcard! alors, comment ajouter un virtuel? – androniennn

+1

exécuter le 'android' commande pour lister les périphériques virtuels et vérifiez si l'appareil a un sdcard défini. Il est possible de créer des périphériques sans (ou avec la taille 0). –

+0

@Heiko Rupp: où je mets les commandes? Désolé mais je ne comprends pas ton idée – androniennn