相机 onActivityResult:resultCode 已RESULT_CANCELED

Camera onActivityResult : resultCode is RESULT_CANCELED

提问人:DevAct 提问时间:1/27/2020 最后编辑:PhantômaxxDevAct 更新时间:1/29/2020 访问量:2809

问:

我是 Java 和 Android 的新手,但我有一个应用程序,应该从相机中拍摄照片并将其保存为文件。我可以启动相机并拍照,但在 onActivityResult 中,resultCode 始终RESULT_CANCELED (0)。首先,我遇到了android.os.FileUriExposedException错误,但是我关注了这个博客,问题似乎得到了解决: https://medium.com/@ali.muzaffar/what-is-android-os-fileuriexposedexception-and-what-you-can-do-about-it-70b9eb17c6d0

虽然我仍然有一个值为 0 (RESULT_CANCEL) 的 resultCode。

以下是我开始相机活动的代码:

private void captureImage() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    File file = new File(Environment.getExternalStorageDirectory() + File.separator + "image.jpg");

    Uri uri = FileProvider.getUriForFile(
            this,
            this.getApplicationContext()
                    .getPackageName() + ".provider", file);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        intent.addFlags(FLAG_GRANT_WRITE_URI_PERMISSION);
    } else {
        List<ResolveInfo> resInfoList = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
        for (ResolveInfo resolveInfo : resInfoList) {
            String packageName = resolveInfo.activityInfo.packageName;
            grantUriPermission(packageName, uri, FLAG_GRANT_WRITE_URI_PERMISSION | FLAG_GRANT_READ_URI_PERMISSION);
        }
    }

    startActivityForResult(intent, CAMERA_REQUEST_CODE);
}

下面是我的 onActivityResult(但 resultCode 始终为 0):

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Résultat de la capture de la photo
    if (requestCode == CAMERA_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
Java Android 相机

评论

0赞 Suryakant Bharti 1/27/2020
为什么想要来自相机的数据...?
0赞 blackapps 1/27/2020
图像文件是由“相机”应用创建的吗?
0赞 blackapps 1/27/2020
这是在 Android Q 上吗?
0赞 DevAct 1/28/2020
我正在 Android 模拟器上进行测试,它确实在 Android Q 上。我的文件应该在 /storage/emulated/0 文件夹中创建,但我无权在设备文件资源管理器下查看此文件夹的内容。
0赞 DevAct 1/28/2020
我在 Android Pie 上的真实手机上遇到了同样的问题。

答:

5赞 DevAct 1/29/2020 #1

最后,我按照此处给出的确切说明进行操作,https://developer.android.com/training/camera/photobasics ,它现在可以工作了。