【发布时间】:2023-03-10 08:33:01
【问题描述】:
我编写了一个代码来访问相机以拍摄个人资料页面的照片。代码如下:
case R.id.textViewTakePhoto:
try {
Utility.showPopupMenuWindow(mContext, false, mPopupWindow);
int camera = ContextCompat.checkSelfPermission(mContext, android.Manifest.permission.CAMERA);
if (camera != PackageManager.PERMISSION_GRANTED) {
Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
}
else{
ActivityCompat.requestPermissions((Activity) mContext,
new String[]{android.Manifest.permission.CAMERA},
9);
}
} catch (Exception e) {
Log.e(TAG, "Can't access camera" + e.getMessage());
e.printStackTrace();
}
break;
在我的清单文件中,我添加了以下代码:
<uses-permission android:name="android.permission.CAMERA" />
<!--for camera purposes-->
<uses-feature
android:name="android.hardware.camera.any"
android:required="true" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
compileSdkVersion 是 25。当我尝试运行应用程序时,它会抛出错误:
Can't access cameraPermission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE cmp=com.google.android.GoogleCamera/com.android.camera.activity.CaptureActivity } from ProcessRecord{1d685bf 17561:com.dell.engage/u0a215} (pid=17561, uid=10215) with revoked permission android.permission.CAMERA
我该如何解决这个问题
【问题讨论】:
-
授予运行时权限。
-
用户可以永久拒绝访问某个应用程序。转到应用程序设置 -> 权限并确保启用了相机权限。此外,您可能希望向用户显示一条消息,说明为什么授予您的应用此权限很重要(如果对它至关重要)。
-
从您的代码中我可以看到您只是在检查是否授予相机权限,而不是要求用户允许使用相机的权限。
标签: android android-camera android-permissions