Quel est le meilleur moyen de créer des fichiers temporaires sur Android?

Bien, ce n'est pas exactement une question, comme je ne suis pas vraiment "coincé" sur mon code, mais j'ai trouvé étrange le comportement de l'API Android qui concerne l'accès, le stockage externe et le Fichier.createTempFile() la méthode, et j'aimerais comprendre ce qui se passe...

Veuillez noter que mon manifeste ne pas inclure la <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">.


Partie 1 :

J'ai le code suivant qui ne travailler comme un charme :

File tempFile = new File(Environment.getExternalStorageDirectory(),
                      "my_temp_file.png");

il crée un fichier temporaire pour moi, et je peux écrire des données en elle sans aucun problème.

Question 1 : Pourquoi agit-il, comme je ne suis pas censé avoir des droits d'écriture sur ma SDCard ?


Partie 2 :

J'ai essayé de modifier mon code pour utiliser le createTempFile qui est la méthode officielle pour créer le fichier temporaire. J'ai donc essayé :

File tempFile = File.createTempFile("my_temp", "png", 
                      Environment.getExternalStorageDirectory());

et ajouté le WRITE_EXTERNAL_STORAGE dans mon manifest.xml. Devinez quoi ? Cela ne fonctionne pas, et je reçois un java.io.IOException :

09-07 14:07:29.061: E/_CLOG(19982): java.io.IOException: Permission denied
09-07 14:07:29.061: E/_CLOG(19982):     at java.io.File.createNewFileImpl(Native Method)
09-07 14:07:29.061: E/_CLOG(19982):     at java.io.File.createNewFile(File.java:1257)
09-07 14:07:29.061: E/_CLOG(19982):     at java.io.File.createTempFile(File.java:1322)
09-07 14:07:29.061: E/_CLOG(19982):     at com.(...).onClick(ProfileImageUpdater.java:58)

Question 2 : Pourquoi cela ne fonctionne pas, alors qu'à mon humble avis, il devrait ?

source d'informationauteur Orabîg