简体   繁体   English

当我尝试在android 7.0中打开Camera时应用程序崩溃

[英]Application get crashed while I am trying to open Camera in android 7.0

In my application there is a facility to capture image by using Camera. 在我的应用程序中,有一种使用Camera捕获图像的功能。 Its working perfectly for all the versions until Android 6,But it make my app crashed in Android version 7.0. 它适用于Android 6之前的所有版本,但它使我的应用在Android 7.0中崩溃。

Manifest 表现

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

Permission added 权限已添加

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();
        }

Permission Listener 权限侦听器

@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);
        }
    }

Code to open camera 打开相机的代码

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);
    }

Crash log 崩溃日志

Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 clip={text/uri-list U:file:///storage/emulated/0/DCIM/QDhealth/profile.jpg} (has extras) } 原因:android.content.ActivityNotFoundException:未找到任何处理意图的活动{act = android.media.action.IMAGE_CAPTURE flg = 0x3 clip = {text / uri-list U:file:/// storage / emulated / 0 / DCIM /QDhealth/profile.jpg}(有其他功能)}

Your first screen check the permisson given as below 您的第一个屏幕检查如下所示的许可

onCreate (or) initialize 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);
}

Overide below method 覆盖以下方法

@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;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM