'개발새발'에 해당되는 글 56건

 

안드로이드 6.0 (API 23) 이후 Internet, Camera, Read External Storage 등의 기능을 사용하기 위해서는 권한 획득이 필요하다.

 

AndroidManifest에 아래와 같이 use-permission을 추가하는 것 외에도 사용자에게 권한 요청을 확인할 필요도 있다는 말이다.

 

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

 

만약, 위 예시 중 Camera 기능을 Intent로 호출할 필요가 있을 때,

 

if (mContext.checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
    requestPermissions(new String[]{Manifest.permission.CAMERA}, TAKE_PICTURE);
}
 

위와 같이 (사용자에게) 권한을 허가 받았는지 체크할 필요가 있다.

 

그렇지 않으면 당연히 Permission Denied 오류를 뿜는다.

 

위의 requestPermissions의 결과는 startActivityForResult와 비슷한 방식으로 확인할 수 있다.

 

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == TAKE_PICTURE) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            launchCameraService();
        } else {
            // 권한 획득 실패
        }
    }
}

 

onRequestPermissionsResult를 Override하여 requestCode와 grantResults를 확인할 수 있다.

 

여기서 grantResults는 PackageManager에서 2가지 옵션을 비교하여 처리할 수 있다.

 

public static final int PERMISSION_DENIED = -1;
public static final int PERMISSION_GRANTED = 0;

 

'Development > Android' 카테고리의 다른 글

간단하게 갤러리 이미지 가져오기  (0) 2019.04.07
간단하게 알림 추가하기  (0) 2019.04.01
블로그 이미지

나뷜나뷜

,