2009-09-16 5 views
2

Dans mon application MediaPlayer pour le streaming vidéo je suis en utilisant le code suivantProblème dans la création de fichiers temporaires dans Android?

File temp = File.createTempFile("mediaplayertmp", "dat"); 

tout en exécutant émet des exceptions comme

Parent directory of file in not 
writable:/sdcard/ 
mediaplayertmp43912.dat 

Je ne comment gérer ce problème, et je veux savoir que lorsque nous exécutons ce code signifie où le fichier sera créé. Tout le monde sait que la solution signifie s'il vous plaît aider avec du code.

+0

Donc, n'est-il pas possible de créer des fichiers TMP qui ne sont pas sur la carte SD? Parce que ça craint. – mxcl

Répondre

5

Je ne suis pas sûr de ce que vous voulez faire ... si le répertoire n'est pas accessible en écriture, il n'est pas accessible en écriture. Lancez une erreur pour l'utilisateur en lui disant que sa carte SD a besoin d'une autorisation d'écriture (éventuellement avec des instructions sur la façon de réparer).

Dans quelques applications j'ai un code similaire à ce que pour vous assurer qu'il est un SDCard ... ne devrait pas être difficile de le modifier pour vous assurer qu'il est aussi inscriptible:

// make sure we have a mounted SDCard 
if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { 
    // they don't have an SDCard, give them an error message and quit 
    final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage(R.string.welcome_dialog_sdcard_error) 
     .setCancelable(false) 
     .setPositiveButton(R.string.welcome_dialog_sdcard_ok, new DialogInterface.OnClickListener() { 
      public void onClick(final DialogInterface dialog, final int id) { 
       finish(); 
      } 
     }); 
    final AlertDialog alert = builder.create(); 
    alert.show(); 
} else { 
    // there's an SDCard available, continue 
} 
17

Est-ce que votre demander la permission d'écrire sur la carte SD dans le manifeste android?

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

J'ai eu ce même problème. Mon application fonctionnait correctement jusqu'à la mise à jour du SDK. Il nécessite maintenant l'autorisation WRITE_EXTERNAL_STORAGE pour écrire sur la carte SD.

0

Le code fonctionne tel quel dans Android 1.5 ou version antérieure. Tout ce qui est plus récent nécessite que l'application demande spécifiquement l'autorisation WRITE_EXTERNAL_STORAGE dans son manifeste.

Questions connexes