Điều này rất đơn giản nhưng không hoạt động. Tôi đang cố tạo một tệp tạm thời (sau này là một tệp lưu trữ vĩnh viễn) để xem trước tệp MP3. Tôi đã thử các biến thể sau của hậu tố như ví dụ sau:android createTempFile ném quyền bị từ chối?
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ó một số thiết lập AndroidManifest.xml mà tôi đang thiếu (Tôi đang sử dụng manifest mặc định)?
Cảm ơn Marc. Tôi đã thử mẫu với thư mục, nhưng tôi vẫn đang cung cấp một thư mục mà tôi không có quyền truy cập vào, getCacheDirectory. Đề xuất của bạn đã hoạt động. Trong khi đó, tôi chuyển sang getBaseContext(). OpenFileOutput (...) – mobibob