Bene, questa non è esattamente una domanda, in quanto non sono realmente "bloccata" sul mio codice, ma ho trovato un comportamento strano per le API Android in merito all'accesso alla memoria esterna e al metodo File.createTempFile(), e Mi piacerebbe capire cosa sta succedendo ...Qual è il modo migliore per creare file temporanei su Android?
Si prega di notare che il mio manifest non include il <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
.
Parte 1:
Ho il seguente codice che fa lavoro come un fascino:
File tempFile = new File(Environment.getExternalStorageDirectory(),
"my_temp_file.png");
si crea un file temporaneo per me, e io in grado di scrivere dati in esso senza alcun problema.
Domanda 1: Perché funziona, dato che non dovrei avere diritti di scrittura sulla mia SDCard?
Parte 2:
Ho provato a cambiare il mio codice per utilizzare il createTempFile
che è il metodo ufficiale per creare il file temporaneo. Così ho provato:
File tempFile = File.createTempFile("my_temp", "png",
Environment.getExternalStorageDirectory());
e ha aggiunto la WRITE_EXTERNAL_STORAGE nel mio manifest.xml. Indovina un po ? Questo non funziona, e ho 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)
Domanda 2: perché questo non funziona, mentre imho dovrebbe?
Hai ricontrollato? –
Sì assolutamente :) Entrambi i casi –
Quale Android API stai usando? Credo che se si imposta l'API al livello 4, allora alcune autorizzazioni non vengono applicate – tomi