0

In my application there is a facility to capture image by using Camera. Its working perfectly for all the versions until Android 6,But it make my app crashed in Android version 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) }

J.R
  • 2,113
  • 19
  • 21

1 Answers1

0

Your first screen check the permisson given as below

onCreate (or) initialize

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;
    }
}
Shabbir Dhangot
  • 8,954
  • 10
  • 58
  • 80