Questo è semplice, ma non funziona. Sto cercando di creare un file temporaneo (in seguito un file di archiviazione permanente) per l'anteprima di un file MP3. Ho provato le seguenti varianti del suffisso come riportato di seguito:android createTempFile genera il permesso negato?
public class StudyFileIo extends Activity {
private static final String TAG = "StudyFileIo";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
File tempFooFile = File
.createTempFile("foo", "dat");
Log.i(TAG, tempFooFile.getAbsolutePath());
} catch (IOException e) {
Log.e(TAG, e.toString());
e.printStackTrace();
}
}
}
Log:
09-07 11:25:20.299 E/StudyFileIo(8859): java.io.IOException: Permission denied
09-07 11:25:20.299 W/System.err(8859): java.io.IOException: Permission denied
09-07 11:25:20.299 W/System.err(8859): at java.io.File.createNewFileImpl(Native Method)
09-07 11:25:20.299 W/System.err(8859): at java.io.File.createNewFile(File.java:1160)
09-07 11:25:20.299 W/System.err(8859): at java.io.File.createTempFile(File.java:1224)
09-07 11:25:20.299 W/System.err(8859): at java.io.File.createTempFile(File.java:1182)
09-07 11:25:20.299 W/System.err(8859): at com.mobibob.studyfileio.StudyFileIo.onCreate(StudyFileIo.java:25)
09-07 11:25:20.299 W/System.err(8859): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-07 11:25:20.299 W/System.err(8859): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-07 11:25:20.309 W/System.err(8859): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-07 11:25:20.309 W/System.err(8859): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-07 11:25:20.309 W/System.err(8859): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-07 11:25:20.309 W/System.err(8859): at android.os.Handler.dispatchMessage(Handler.java:99)
09-07 11:25:20.309 W/System.err(8859): at android.os.Looper.loop(Looper.java:123)
09-07 11:25:20.309 W/System.err(8859): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-07 11:25:20.309 W/System.err(8859): at java.lang.reflect.Method.invokeNative(Native Method)
09-07 11:25:20.309 W/System.err(8859): at java.lang.reflect.Method.invoke(Method.java:521)
09-07 11:25:20.319 W/System.err(8859): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876)
09-07 11:25:20.319 W/System.err(8859): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
09-07 11:25:20.319 W/System.err(8859): at dalvik.system.NativeStart.main(Native Method)
c'è qualche impostazione AndroidManifest.xml che mi manca (sto usando manifesti di default)?
Grazie Marc. Avevo provato il modulo con la directory, ma stavo ancora fornendo una directory alla quale non avevo accesso, getCacheDirectory. Il tuo suggerimento ha funzionato Nel frattempo, sono passato a getBaseContext(). OpenFileOutput (...) – mobibob