这两个问题可能相关,与您创建传递给相机的文件参考的方式有关。如果要将图像文件保存到SD卡,则需要创建文件引用,该文件引用应包含该位置的完整路径,而不仅仅是文件名。例如,此代码会将映像文件保存在SD卡根目录中:
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);File image = new File(Environment.getExternalStorageDirectory(),"TeamImage.jpg");camera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));startActivityForResult(camera, PICTURE_RESULT);
我还更改了您的文件名,使其不包含空格;只是因为我不确定Camera应用程序也不会在该应用程序上崩溃。由于相机在尝试打开并写入文件位置时会感到困惑,因此可能总是使用来返回
RESULT_CANCELED。您不需要此处的WRITE_EXTERNAL_STORAGE权限,因为“相机”应用正在访问SD卡。
还有一点需要注意:我不认为其他其他MediaStore附加功能都可以通过此Intent传递。通常,如果要将元数据附加到图像,则必须先将带有该元数据的Uri引用插入MediaStore
ContentProvider,然后再将图像保存到磁盘。
希望有帮助!



