Android 无法在照相机中打开文件

Android 无法在照相机中打开文件,android,Android,我的一个片段包含一个简单的照相机应用程序。它应该拍摄一张照片,然后在imageView中永久显示该照片。在将新创建的文件传递到相机中时,我收到一个“未找到文件”错误。我不知道为什么会这样。我的意图仍将通过,我可以拍照,但不会保存到文件中。下面是我的代码 代码: 错误: 12-19 19:09:50.238 5705-5705/com.tble.brgo W/ImageView: Unable to open content: file:///data/user/0/com.tble.brgo/f

我的一个片段包含一个简单的照相机应用程序。它应该拍摄一张照片,然后在imageView中永久显示该照片。在将新创建的文件传递到相机中时,我收到一个“未找到文件”错误。我不知道为什么会这样。我的意图仍将通过,我可以拍照,但不会保存到文件中。下面是我的代码

代码:

错误:

12-19 19:09:50.238 5705-5705/com.tble.brgo W/ImageView: Unable to open content: file:///data/user/0/com.tble.brgo/files/JPEG_20161219_190950_.jpg
                                                        java.io.FileNotFoundException: /data/user/0/com.tble.brgo/files/JPEG_20161219_190950_.jpg: open failed: ENOENT (No such file or directory)
                                                            at libcore.io.IoBridge.open(IoBridge.java:487)
                                                            at java.io.FileInputStream.<init>(FileInputStream.java:76)
                                                            at java.io.FileInputStream.<init>(FileInputStream.java:103)
                                                            at android.content.ContentResolver.openInputStream(ContentResolver.java:676)
                                                            at android.widget.ImageView.resolveUri(ImageView.java:832)
                                                            at android.widget.ImageView.setImageURI(ImageView.java:449)
                                                            at layout.StudentID.takePicture(StudentID.java:107)
                                                            at layout.StudentID$1.onClick(StudentID.java:78)
                                                            at android.view.View.performClick(View.java:5265)
                                                            at android.view.View$PerformClick.run(View.java:21534)
                                                            at android.os.Handler.handleCallback(Handler.java:815)
                                                            at android.os.Handler.dispatchMessage(Handler.java:104)
                                                            at android.os.Looper.loop(Looper.java:207)
                                                            at android.app.ActivityThread.main(ActivityThread.java:5728)
                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
                                                         Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
                                                            at libcore.io.Posix.open(Native Method)
                                                            at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
                                                            at libcore.io.IoBridge.open(IoBridge.java:473)
                                                            at java.io.FileInputStream.<init>(FileInputStream.java:76) 
                                                            at java.io.FileInputStream.<init>(FileInputStream.java:103) 
                                                            at android.content.ContentResolver.openInputStream(ContentResolver.java:676) 
                                                            at android.widget.ImageView.resolveUri(ImageView.java:832) 
                                                            at android.widget.ImageView.setImageURI(ImageView.java:449) 
                                                            at layout.StudentID.takePicture(StudentID.java:107) 
                                                            at layout.StudentID$1.onClick(StudentID.java:78) 
                                                            at android.view.View.performClick(View.java:5265) 
                                                            at android.view.View$PerformClick.run(View.java:21534) 
                                                            at android.os.Handler.handleCallback(Handler.java:815) 
                                                            at android.os.Handler.dispatchMessage(Handler.java:104) 
                                                            at android.os.Looper.loop(Looper.java:207) 
                                                            at android.app.ActivityThread.main(ActivityThread.java:5728) 
                                                            at java.lang.reflect.Method.invoke(Native Method) 
                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
12-19 19:09:50.238 5705-5705/com.tble.brgo W/ImageView:无法打开内容:file:///data/user/0/com.tble.brgo/files/JPEG_20161219_190950_.jpg
java.io.FileNotFoundException:/data/user/0/com.tble.brgo/files/JPEG_20161219_190950_970;.jpg:open failed:enoint(没有这样的文件或目录)
在libcore.io.IoBridge.open中(IoBridge.java:487)
位于java.io.FileInputStream。(FileInputStream.java:76)
位于java.io.FileInputStream。(FileInputStream.java:103)
位于android.content.ContentResolver.openInputStream(ContentResolver.java:676)
在android.widget.ImageView.resolveUri(ImageView.java:832)上
在android.widget.ImageView.setImageURI(ImageView.java:449)上
在layout.StudentID.takePicture(StudentID.java:107)
在layout.StudentID$1.onClick(StudentID.java:78)
在android.view.view.performClick上(view.java:5265)
在android.view.view$PerformClick.run(view.java:21534)
位于android.os.Handler.handleCallback(Handler.java:815)
位于android.os.Handler.dispatchMessage(Handler.java:104)
位于android.os.Looper.loop(Looper.java:207)
位于android.app.ActivityThread.main(ActivityThread.java:5728)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:789)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
原因:android.system.ErrnoException:open失败:enoint(没有这样的文件或目录)
在libcore.io.Posix.open中(本机方法)
在libcore.io.BlockGuardOs.open上(BlockGuardOs.java:186)
在libcore.io.IoBridge.open中(IoBridge.java:473)
位于java.io.FileInputStream。(FileInputStream.java:76)
位于java.io.FileInputStream。(FileInputStream.java:103)
位于android.content.ContentResolver.openInputStream(ContentResolver.java:676)
在android.widget.ImageView.resolveUri(ImageView.java:832)上
在android.widget.ImageView.setImageURI(ImageView.java:449)上
在layout.StudentID.takePicture(StudentID.java:107)
在layout.StudentID$1.onClick(StudentID.java:78)
在android.view.view.performClick上(view.java:5265)
在android.view.view$PerformClick.run(view.java:21534)
位于android.os.Handler.handleCallback(Handler.java:815)
位于android.os.Handler.dispatchMessage(Handler.java:104)
位于android.os.Looper.loop(Looper.java:207)
位于android.app.ActivityThread.main(ActivityThread.java:5728)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:789)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)

您调用
startActivityForResult(拍摄图片内容,请求拍照)。这意味着如果你运气好,几秒钟或几分钟后你就会有一张照片

在下一个语句中,您将没有图片,其中有
picView.setImageURI(photoURI)


移动picView.setImageURI(photoURI)编码到
onActivityResult()
,并仅在您实际获得图片时调用它(即,结果是
活动\u OK
)。

没有关于的文字?@Selvin:嗯,这很复杂,实际上与问题中的特定问题没有直接关系。但是是的,如果您的
targetSdkVersion
为24或更高,并且您想要使用
ACTION\u IMAGE\u CAPTURE
,那么您将有一些工作要做,无论是使用
FileProvider
12-19 19:09:50.238 5705-5705/com.tble.brgo W/ImageView: Unable to open content: file:///data/user/0/com.tble.brgo/files/JPEG_20161219_190950_.jpg
                                                        java.io.FileNotFoundException: /data/user/0/com.tble.brgo/files/JPEG_20161219_190950_.jpg: open failed: ENOENT (No such file or directory)
                                                            at libcore.io.IoBridge.open(IoBridge.java:487)
                                                            at java.io.FileInputStream.<init>(FileInputStream.java:76)
                                                            at java.io.FileInputStream.<init>(FileInputStream.java:103)
                                                            at android.content.ContentResolver.openInputStream(ContentResolver.java:676)
                                                            at android.widget.ImageView.resolveUri(ImageView.java:832)
                                                            at android.widget.ImageView.setImageURI(ImageView.java:449)
                                                            at layout.StudentID.takePicture(StudentID.java:107)
                                                            at layout.StudentID$1.onClick(StudentID.java:78)
                                                            at android.view.View.performClick(View.java:5265)
                                                            at android.view.View$PerformClick.run(View.java:21534)
                                                            at android.os.Handler.handleCallback(Handler.java:815)
                                                            at android.os.Handler.dispatchMessage(Handler.java:104)
                                                            at android.os.Looper.loop(Looper.java:207)
                                                            at android.app.ActivityThread.main(ActivityThread.java:5728)
                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
                                                         Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
                                                            at libcore.io.Posix.open(Native Method)
                                                            at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
                                                            at libcore.io.IoBridge.open(IoBridge.java:473)
                                                            at java.io.FileInputStream.<init>(FileInputStream.java:76) 
                                                            at java.io.FileInputStream.<init>(FileInputStream.java:103) 
                                                            at android.content.ContentResolver.openInputStream(ContentResolver.java:676) 
                                                            at android.widget.ImageView.resolveUri(ImageView.java:832) 
                                                            at android.widget.ImageView.setImageURI(ImageView.java:449) 
                                                            at layout.StudentID.takePicture(StudentID.java:107) 
                                                            at layout.StudentID$1.onClick(StudentID.java:78) 
                                                            at android.view.View.performClick(View.java:5265) 
                                                            at android.view.View$PerformClick.run(View.java:21534) 
                                                            at android.os.Handler.handleCallback(Handler.java:815) 
                                                            at android.os.Handler.dispatchMessage(Handler.java:104) 
                                                            at android.os.Looper.loop(Looper.java:207) 
                                                            at android.app.ActivityThread.main(ActivityThread.java:5728) 
                                                            at java.lang.reflect.Method.invoke(Native Method) 
                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)