Qual é a melhor maneira de criar arquivos temporários no Android?
Bem, isso não é exatamente uma pergunta, já que eu não estou realmente "preso" no meu código, mas eu encontrei um comportamento estranho para a API do Android sobre o acesso ao armazenamento externo e o método File.createTempFile (), e eu Eu gostaria de entender o que está acontecendo ...
Por favor note que o meu manifestonão incluir o<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
.
Parte 1 :
Eu tenho o seguinte código quefaz trabalhe como um encanto:
File tempFile = new File(Environment.getExternalStorageDirectory(),
"my_temp_file.png");
ele cria um arquivo temporário para mim e eu posso escrever dados nele sem nenhum problema.
Questão 1 : Por que funciona, já que eu não deveria ter direitos de escrita no meu SDCard?
Parte 2 :
Eu tentei mudar meu código para usar ocreateTempFile
qual é o método oficial para criar arquivo temporário. Então eu tentei:
File tempFile = File.createTempFile("my_temp", "png",
Environment.getExternalStorageDirectory());
e adicionou oWRITE_EXTERNAL_STORAGE no meu manifest.xml. Adivinha ? Isso não funciona, e eu recebo umjava.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)
Questão 2 : Por que isso não funciona, enquanto isso deveria ser?