Android:从第三方相机应用获取照片时发生ENOENT错误

时间:2018-10-16 15:33:17

标签: android android-camera

我正在使用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 {
            ...
        }
    }
 }

1 个答案:

答案 0 :(得分:1)

这很可能是第三方应用程序中的错误,该错误未实现正确处理ACTION_IMAGE_CAPTURE意图。

例如,可能只期望file:// URI,而不是现在需要的content:// URI。或其他一些问题。

不幸的是,第三方应用程序的应用程序开发人员有可能解决此问题的唯一方法。