Каков наилучший способ создания временных файлов на 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 Почему это не работает, в то время как имхо это должно?