Android M의 RuntimePermissions Sample 개요

6290 단어 Android
안드로이드 M에서 가져온 Runtime Permissions의 샘플 적용을 카메라에 대한 액세스 권한에 집중하여 요약합니다.
https://github.com/googlesamples/android-RuntimePermissions

AndroidManifest.xml

    <uses-permission android:name="android.permission.CAMERA"/>
카메라에 대한 액세스 권한을 요청합니다.
상기 기술에서 MNC 미만의 터미널은 설치할 때 권한이 부여되며, 그 외에 안드로이드 M은 실행할 때 권한이 있는지 확인하고 없으면 사용자에게 권한을 요청해야 한다.

권한 검사

if (PermissionUtil.hasSelfPermission(this, Manifest.permission.CAMERA)) {
    //権限あり
    showCameraPreview();
} else {
    //権限なし
    requestPermissions(new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA);
}
카메라에 대한 접근 권한을 확인하십시오. 권한이 없으면 호출하고 권한을 요청하십시오.이 메서드를 호출하면 다음과 같은 대화상자가 표시됩니다.

Activty#requestPermissions 결과 처리


사용자가 위의 대화 상자에 응답하면 가 호출됩니다requestPermissions.
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

    if (requestCode == REQUEST_CAMERA) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 「許可」が押下された

        } else {
            // 「許可しない」が押下された
        }

    } else {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

권한이 없을 때 발생하는 예외

Camera c = null;
try {
    c = Camera.open(cameraId); // attempt to get a Camera instance
} catch (Exception e) {
    //Camera is not available
}
카메라 액세스 권한이 없는 상태에서 실행Activity#onRequestPermissionsResult하면 예외가 발생합니다.
권한이 있으면 아무 문제 없이 카메라에 접근할 수 있다.

권한 검사 방법

public static boolean hasSelfPermission(Activity activity, String permission) {
    if (!isMNC()) {
        return true;
    }
    return activity.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED;
}
Android M 미만의 터미널은 설치할 때 권한이 부여되므로 항상 반환됩니다Camera.open.
안드로이드 M 이상true에서 검사한 결과입니다.
기타PermissionUtil 방법

응용 프로그램 권한 설정 화면


설정 → 응용 → 응용 프로그램 정보 → 허용 및 전진 화면에서 열기/닫기 권한.

좋은 웹페이지 즐겨찾기