[英]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.