【问题标题】:Application get crashed while I am trying to open Camera in android 7.0当我尝试在 android 7.0 中打开相机时,应用程序崩溃了
【发布时间】:2017-06-19 10:20:23
【问题描述】:

在我的应用程序中,有一个使用相机捕捉图像的工具。 它适用于 Android 6 之前的所有版本,但它使我的应用在 Android 7.0 版本中崩溃。

清单

<uses-permission android:name="android.permission.CAMERA" />

已添加权限

if (ContextCompat.checkSelfPermission(AddFamilyMemberActivity.this,
                android.Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(AddFamilyMemberActivity.this,
                    new String[]{android.Manifest.permission.CAMERA},
                    1);
        } else {
            sendToExternalApp();
        }

权限监听器

@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == 1 && permissions[0].equals(android.Manifest.permission.CAMERA) &&
                grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            sendToExternalApp();
        } else if (requestCode == 1 && permissions[0].equals(android.Manifest.permission.CAMERA) &&
                grantResults[0] == PackageManager.PERMISSION_DENIED) {
            Utilities.showSnackBar("You need to enable camera permission for update profile image", this);
        }
    }

打开相机的代码

protected void sendToExternalApp()
    {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        mProcessingPhotoUri =  getImageFile();
        intent.putExtra(MediaStore.EXTRA_OUTPUT, mProcessingPhotoUri);
        activity.startActivityForResult(intent, REQUEST_CODE_SELECT_IMAGE);
    }

崩溃日志

原因: android.content.ActivityNotFoundException:未找到处理 Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 clip={text/uri-list U:file:///storage/emulated/0/DCIM/QDhealth/ 的活动profile.jpg}(有附加功能)}

【问题讨论】:

  • 您确定权限也放入您的清单中
  • 是的,我已经使用清单权限编辑了我的问题
  • 你的日志在哪里?
  • 我已经在问题中更新了
  • 1) 设备中可能没有摄像头 2) 设备中没有sd卡

标签: java android


【解决方案1】:

您的第一个屏幕检查下面给出的许可

onCreate(或)初始化

if ((ContextCompat.checkSelfPermission(LoginActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) {
    requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA},
                    MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
}

覆盖下面的方法

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {
        case PERMISSIONS_CODE:
            if (grantResults.length <= 0 || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show();
            }
            break;
        default:
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            break;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多