私はいくつかの質問を読んだが、ファイルの保存についてはAndroid Guideだが、どこが間違っているのか分からない。ファイルの保存中に、SDカードのパスではなく内部パスが取得されています。
SDカードの画像ディレクトリにある新しいフォルダに画像を保存しようとしています。
私はマニフェストに<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
を持っています。
スローされたエラーがある場合NullPointerException
この方法でString storageStage = Environment.getExternalStorageState();
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory (
Environment.DIRECTORY_PICTURES),"/WordResolver");
mediaStorageDir.mkdirs();
if (! mediaStorageDir.exists()){
if(! mediaStorageDir.mkdirs()) {
Log.d("WordResolver", "Failed to create directory");
return null;
}
}
//Creating Media File Name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE) {
mediaFile = new File (mediaStorageDir.getPath() + File.separator + "IMG_WR" +
timeStamp + ".jpg");
} else {
return null;
}
return mediaFile;
}
を例外をスローします。プログラムはあなたがここに見ることができるように内部ストレージにはなく、SDカードに保存しようとしているので、それは奇妙な問題です理由:私はという印象の下にあったとして
を外部ストレージに保存されますか?それが重要な場合、私は、エミュレートデバイスを使用してい
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.aaron.wordresolver/com.example.aaron.wordresolver.cameraShot}: java.lang.NullPointerException: file
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: file
at android.net.Uri.fromFile(Uri.java:452)
at com.example.aaron.wordresolver.cameraShot.getOutputMediaFileUri(cameraShot.java:55)
at com.example.aaron.wordresolver.cameraShot.onCreate(cameraShot.java:45)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
:
は、ここでスタックトレースです!私はEnvironment.getExternalStoragePublicDirectoryが外部ストレージに保存します印象であったように
乾杯
23歳以上のアクセス権を要求しなければならないことがわかっていて、それをソートしました。いい男! – COYG