public void startCamera() {
try{
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(intent.resolveActivity(getPackageManager()) != null){
cameraPhoto = createStoragePath();//给即将拍照获取的照片命名,并返回它的uri
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
imageUri = FileProvider.getUriForFile(this, "com.example.zhongju.ui.fileprovider", cameraPhoto );
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
startActivityForResult(intent,CAMERA_REQUEST);
}
}catch (ActivityNotFoundException e){
e.printStackTrace();
}
}
/**
* 设置相片存放路径,先将照片存放到SD卡中,再操作
*
* @return
*/
private File createStoragePath() {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
try {
storagePath = Environment.getExternalStorageDirectory().getAbsolutePath()+
File.separator + "DCM";
storageDir = new File(storagePath);
storageDir.mkdirs();
imageFile = File.createTempFile(timeStamp, ".jpg", storageDir);
} catch (IOException e) {
e.printStackTrace();
}
//创建Uri
return imageFile;
}
结果总是报这个错,求帮助o(╥﹏╥)oo(╥﹏╥)o
W/System.err: java.io.IOException: No such file or directory
W/System.err: at java.io.UnixFileSystem.createFileExclusively0(Native Method)
W/System.err: at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:317)
at java.io.File.createTempFile(File.java:2018)
at com.example.zhongju.ui.YingXiangActivity.createStoragePath(YingXiangActivity.java:104)
at com.example.zhongju.ui.YingXiangActivity.startCamera(YingXiangActivity.java:77)
at com.example.zhongju.ui.YingXiangActivity_ViewBinding$2.doClick(YingXiangActivity_ViewBinding.java:49)
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:18)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.zhongju, PID: 3864
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getCanonicalPath()' on a null object reference
at androidx.core.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:728)
at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:418)
at com.example.zhongju.ui.YingXiangActivity.startCamera(YingXiangActivity.java:79)
at com.example.zhongju.ui.YingXiangActivity_ViewBinding$2.doClick(YingXiangActivity_ViewBinding.java:49)
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:18)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)