答案 0 :(得分:0)
用于创建File
以告知相机应用程序保存图像的位置的代码如下所示:
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
imagesFolder.mkdirs();
File image = new File(imagesFolder, "picture2" + ".jpg");
用于创建不完整的代码 - File
用于解码图像的代码如下所示:
"/MyImages/picture1"
这些不一样:
第一个有Environment.getExternalStorageDirectory()
,第二个没有
第一个有.jpg
分机,第二个没有
因此,BitmapFactory
将找不到此文件。
此外,您还没有检查到onActivityResult()
确实得到了肯定的结果。如果用户决定不拍照并按BACK退出相机活动,则表示您没有照片。
此外,这不起作用:
File thumbnailFile = image;
您永远不会为image
字段指定值,因此image
为null
,thumbnailFile
为null
,您尝试时会崩溃创建FileOutputStream
。要解决此问题,请将File image = new File(file, "picture1" + ".jpg");
替换为image = new File(file, "picture1" + ".jpg");
,以便将值分配给名为image
的字段,而不是创建名为image
的局部变量。
您将在未来遇到更多问题(例如,无法在Android 7.0+上使用Uri.fromFile()
,而无法处理在相机应用程序位于前台时终止您的进程的情况。)