이것은 Android에서 런타임 CAMERA 권한을 요청하는 코드입니다. 내 onCreate()
에서 handleCameraPermission()
으로 전화합니다.Android 런타임 권한이 작동하지 않습니다.
처음으로 앱을 실행하면 권한이 자동으로 사용 설정됩니다. 나는 설정에 가서 허가를 사용하지 않았다. 그러나 여전히 checkIfPermissionEnabled()
이 true를 반환하지만 카메라가 시작되지 않습니다. 그렇다면 checkIfPermissionEnabled()
의 문제점은 무엇입니까?
hasCameraPermission = false
을 설정하고 코드를 실행하면 대화 상자는 없지만 카메라 사용 권한이 활성화되어 모든 것이 잘되었습니다.
private boolean checkIfPermssionEnabled() {
int result = ContextCompat.checkSelfPermission(context, android.Manifest.permission.CAMERA);
if(result == PackageManager.PERMISSION_GRANTED)
return true;
return false;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case CAMERA_PERMISSION_REQUEST:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//granted
hasCameraPermission = true;
} else {
//not granted
hasCameraPermission = false;
super.onBackPressed();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
private void handleCameraPermission() {
int myVersion = Build.VERSION.SDK_INT;
if(myVersion >= Build.VERSION_CODES.M) {
hasCameraPermission = checkIfPermssionEnabled();
if(!hasCameraPermission) {
Log.d("cam","cam no permission");
//if(ActivityCompat.shouldShowRequestPermissionRationale(activity,android.Manifest.permission.CAMERA)) {
ActivityCompat.requestPermissions(activity,new String[]{android.Manifest.permission.CAMERA},CAMERA_PERMISSION_REQUEST);
Log.d("cam","cam dialog permission showed");
}
//else {
// ActivityCompat.requestPermissions(activity, new String[]{android.Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST);
//}
} else
Log.d("cam","cam has permission");
} else
hasCameraPermission = true;
}
내가 카메라 권한을 사용할 수없는 경우, 허가를 요청의 기본 대화 상자가 나타납니다있다 acheive하려고 내가 즉 사용자의 입력에 대한 콜백을 얻어야한다, 사용자 거부 또는 허용을 누를 때 알림을 받으려면 .
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, YOUR_REQUEST_CODE);
당신의'targetSdkVersion' 무엇인가 –
compileSdk이 23이고 minSdk가 16이고 targetSdk가 17 –
인 경우 targetSdkVersion이 문제의 원인입니다. 이 질문을 참조하십시오 : http://stackoverflow.com/questions/33039188/checkselfpermission-returning-permission-granted-for-revoked-permission-with-tar –