Ну, это не совсем вопрос, так как я не "застрял" на своем коде, но я нашел странное поведение для Android API в отношении доступа к внешнему хранилищу и к методу File.createTempFile() и я хотел бы понять, что происходит...
Обратите внимание, что мой манифест не содержит <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
.
Часть 1:
У меня есть следующий код, который делает работает как прелесть:
File tempFile = new File(Environment.getExternalStorageDirectory(),
"my_temp_file.png");
он создает для меня временный файл, и я могу писать данные в нем без каких-либо проблем.
Вопрос 1: Почему он работает, поскольку я не должен писать права на SDCard?
Часть 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)
Вопрос 2: Почему это не работает, тогда как imho это должно?