Каков наилучший способ создания временных файлов на Android?

Ну, это не совсем вопрос, так как я на самом деле не "застрял" в моем коде, но я обнаружил странное поведение для API Android в отношении доступа к внешнему хранилищу и методу File.createTempFile (), и я хотел бы понять, что происходит ...

Обратите внимание, что мой манифестdoes not включить<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">.

Part 1 :

У меня есть следующий код, которыйdoes работать как шарм:

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

он создает временный файл для меня, и я могу без проблем записывать в него данные.

Question 1 : Почему это работает, поскольку у меня нет прав на запись на мою SDCard?

Part 2 :

Я пытался изменить свой код, чтобы использоватьcreateTempFile который является официальным методом для создания временного файла. Итак, я попробовал:

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

и добавилWRITE_EXTERNAL_STORAGE в моем manifest.xml. Угадай, что ? Это не работает, и я получаю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 Почему это не работает, в то время как имхо это должно?

Ответы на вопрос(3)

Ваш ответ на вопрос