我正在为M版的Android权限工作。
在我的应用程序中,在我的活动中,我启动了一个服务,在其中使用以下代码来打开摄像头。
在服务中打开相机的代码
cameraManager.openCamera(frontFacingCameraId, stateCallback, null);
我查看了一些文档,并发现我不能在服务中请求权限,我需要在活动中请求权限。因此,我在我的活动中请求权限。
请求权限的活动
if (PermissionUtil.getCameraPermission(this)) {
Debug.d(TAG, "Camera Permission -- permission exsited");
performRecordingAction();
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case PermissionUtil.SDK__CAMERA_PERMISSION:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Debug.d(TAG, "Granted -- Camera Permission");
performRecordingAction();
} else {
Debug.d(TAG, "Denied -- Camera Permission");
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
break;
}
}
PermissionUtil
public static boolean getCameraPermission(Activity activity) {
Debug.d(TAG, "getCameraPermission");
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.CAMERA);
if (permission != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.CAMERA)) {
Debug.d(TAG, "Already Denied -- Camera Permission");
return false;
} else {
Debug.d(TAG, "Request Camera Permission");
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.CAMERA}, SDK__CAMERA_PERMISSION);
return false;
}
} else {
return true;
}
}
但是在以上代码中,服务仍然抛出安全异常错误。
有人能建议我哪里出错了吗?是否有任何方法可以请求服务权限?