我正在使用stock Android Java code从我的应用中拍照。与默认相机配合使用效果很好。当我使用第三方相机应用程序时,出现错误弹出窗口(不是从我的应用程序弹出),并且该应用程序收到的图像为空白:/myapp_app_images/JPEG_20191016....jpg: open failed: ENOENT (no such file or directory)
。 myapp_app_images
路径在file_paths.xml中设置为external-path
:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="myapp_app_images" path="Android/data/com.myapp/files/Pictures" />
</paths>
使用第三方相机应用程序时,我的应用程序永远不会到达活动的onActivityResult
。它与本机相机一起使用。
这是第三方应用程序的缺陷吗?如果可以,我方面是否有解决方法?我有一个想法,就是第三方相机的照片可能被保存到了无法访问的位置,或者该路径被错误地报告或缺少完整路径。但是我不确定如何检查或解决这些问题,或者是否有其他原因。
我的意图和处理程序,为清晰起见,缩短了一些错误处理:
private void goToCamera() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
...
}
if (photoFile != null) {
Uri photoUri = FileProvider.getUriForFile(this, "com.myapp.fileprovider", photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(takePictureIntent, REQUEST_PHOTO_CAPTURE);
} else {
...
}
}
}
答案 0 :(得分:1)
这很可能是第三方应用程序中的错误,该错误未实现正确处理ACTION_IMAGE_CAPTURE意图。
例如,可能只期望file:// URI,而不是现在需要的content:// URI。或其他一些问题。
不幸的是,第三方应用程序的应用程序开发人员有可能解决此问题的唯一方法。