정상에서 IT를 외치다

[Android, 권한설정] 안드로이드 권한 설정 본문

안드로이드

[Android, 권한설정] 안드로이드 권한 설정

Black-Jin 2018. 4. 4. 14:11
반응형


안드로이드 마시멜로우 이상 부터는 권한 설정 동의가 필요합니다.


TedPermission 이라는 권한설정 라이브러리를 많이 사용하는데요.


이는 아래링크를 확인하시면 친절하게 설명 되어 있습니다


http://gun0912.tistory.com/61




<중요>


안드로이드 오레오 버전 에서 TedPermission 사용시  


java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation 에러가 발생합니다.


이는 제가 포스팅한 오레오에서 발생하는 풀 스크린 설정 에러 와 동일하게 TedPermissionActivity 에서 발생하는데요.


현재 포스팅 하고 있는 시점의 TedPermission 버전은 2.1.0 입니다.


추후 TedPermission 이 업데이트 되서 에러가 수정되기 전까지는 아래 코드로 버전 체크를 하셔야 되겠습니다.






저는 안드로이드에서 코드로 직접 권한 설정하는 법을 소개해 드릴려고 합니다.


1. AndroidMenifest 에 필요한 권한을 등록해 줍니다.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

저는 위치 권한 획득을 넣었습니다.



2.  권한 설정을 할 Activity 에 request 값으로 받아올 변수를 설정해 줍니다.

private static int REQUEST_ACCESS_FINE_LOCATION = 1000;


3. OS 버전이 마시멜로 이상일 경우 다음과 같이 권한 체크 함수를 설정해 줍니다.

// OS가 Marshmallow 이상일 경우 권한체크를 해야 합니다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);

if(permissionCheck == PackageManager.PERMISSION_DENIED){

// 권한 없음
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
REQUEST_ACCESS_FINE_LOCATION);


} else{

// ACCESS_FINE_LOCATION 에 대한 권한이 이미 있음.

}


}

// OS가 Marshmallow 이전일 경우 권한체크를 하지 않는다.
else{

}


4. 권한 허용에 관한 팝업이 나오고 리턴데이터는 onRequestPermissionResult 로 전송됩니다.

아래 결과에서 requestCode 는 위에서 설정한 REQUEST_ACCESS_FINE_LOCATION 의 값이 1000 이 옵니다.

이 변수는 필요할 경우 사용하면 됩니다.

@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// grantResults[0] 거부 -> -1
// grantResults[0] 허용 -> 0 (PackageManager.PERMISSION_GRANTED)

if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// ACCESS_FINE_LOCATION 에 대한 권한 획득.

} else {
       // ACCESS_FINE_LOCATION 에 대한 권한 거부.

}
}

위와 같이 안드로이드 상의 코드를 사용하여 권한 허용 포스터를 해봤습니다.

반응형
Comments