누구든지이 문제를 해결할 방법을 알고 있습니까? 사진을 찍으려는 의도의 카메라를 사용하고 있습니다. 다음 방법은 그림을 저장할 파일을 생성합니다. 그러나 mkdirs()
은 장치에 디렉터리를 만들 수 없습니다. 그런 상황에서 나의 선택은 무엇입니까?mediaStorageDir.mkdirs() 디렉토리를 만들지 않음
private static File getOutputMediaFile() {
File mediaStorageDir = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
"MyCameraApp");
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("MyCameraApp", "failed to create directory");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
.format(new Date());
return new File(mediaStorageDir.getPath() + File.separator + "IMG_"
+ timeStamp + ".jpg");
}
오류 로그 :
04-20 09:56:07.370: D/MyCameraApp(809): failed to create directory
04-20 09:56:07.370: D/AndroidRuntime(809): Shutting down VM
04-20 09:56:07.370: W/dalvikvm(809): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
04-20 09:56:07.441: E/AndroidRuntime(809): FATAL EXCEPTION: main
04-20 09:56:07.441: E/AndroidRuntime(809): java.lang.IllegalStateException: Could not execute method of the activity
04-20 09:56:07.441: E/AndroidRuntime(809): at android.view.View$1.onClick(View.java:3591)
04-20 09:56:07.441: E/AndroidRuntime(809): at android.view.View.performClick(View.java:4084)
04-20 09:56:07.441: E/AndroidRuntime(809): at android.view.View$PerformClick.run(View.java:16966)
04-20 09:56:07.441: E/AndroidRuntime(809): at android.os.Handler.handleCallback(Handler.java:615)
04-20 09:56:07.441: E/AndroidRuntime(809): at android.os.Handler.dispatchMessage(Handler.java:92)
04-20 09:56:07.441: E/AndroidRuntime(809): at android.os.Looper.loop(Looper.java:137)
04-20 09:56:07.441: E/AndroidRuntime(809): at android.app.ActivityThread.main(ActivityThread.java:4745)
04-20 09:56:07.441: E/AndroidRuntime(809): at java.lang.reflect.Method.invokeNative(Native Method)
04-20 09:56:07.441: E/AndroidRuntime(809): at java.lang.reflect.Method.invoke(Method.java:511)
04-20 09:56:07.441: E/AndroidRuntime(809): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-20 09:56:07.441: E/AndroidRuntime(809): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-20 09:56:07.441: E/AndroidRuntime(809): at dalvik.system.NativeStart.main(Native Method)
04-20 09:56:07.441: E/AndroidRuntime(809): Caused by: java.lang.reflect.InvocationTargetException
04-20 09:56:07.441: E/AndroidRuntime(809): at java.lang.reflect.Method.invokeNative(Native Method)
04-20 09:56:07.441: E/AndroidRuntime(809): at java.lang.reflect.Method.invoke(Method.java:511)
04-20 09:56:07.441: E/AndroidRuntime(809): at android.view.View$1.onClick(View.java:3586)
04-20 09:56:07.441: E/AndroidRuntime(809): ... 11 more
04-20 09:56:07.441: E/AndroidRuntime(809): Caused by: java.lang.NullPointerException: file
04-20 09:56:07.441: E/AndroidRuntime(809): at android.net.Uri.fromFile(Uri.java:441)
04-20 09:56:07.441: E/AndroidRuntime(809): at com.mycompany.myapp.utils.FileUtils.getOutputMediaFileUri(FileUtils.java:19)
04-20 09:56:07.441: E/AndroidRuntime(809): at com.mycompany.myapp.MyActivity.dispatchCameraIntent(MyActivity.java:56)
04-20 09:56:07.441: E/AndroidRuntime(809): ... 14 more
04-20 09:56:10.860: I/Process(809): Sending signal. PID: 809 SIG: 9
getExternalStoragePublicDirectory는 API 8에서만 사용할 수 있습니다. OS 버전이 낮은 장치에서 응용 프로그램을 테스트하고 있습니까? – Blackbelt