반응형
안녕하세요. 훈츠 입니다. 안드로이드 권한 요청 및 얻기에 대한 정리 입니다.
권한 설정
Manifest 등록 하기
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.memoapp">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
...이하 생략
권한 확인
ContextCompat.checkSelfPermisson() 메서드 이용해서 권한 확인을 합니다.
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permisson.SMS_READ) ==
PackageManager.PERMISSION_GRANTED
ContextCompat.checkSelfPermission() 메서드는 권한이 있는 경우, PERMISSION_GRANTED를 반환하고 없는 경우는 PERMISSION_DINIED를 반환 합니다.
권한 요청
ActivityCompat.shouldShowRequestPermissionRationale() 메서드 이용 : 유저에게 권한을 요청할때, 그 권한이 필요한 이유를 유저에게 설명 해주려고 할때 사용하는 메서드 입니다.
//권한 확인후, 거부했으면 토스트 메시지띄우기
if(ActivityCompat.shouldShowRequestPermissionRationale(this ,
android.Manifest.permission.ACCESS_FINE_LOCATION))
{
Toast.makeText(this, "앱을 실행하려면 위치 권한이 필요합니다.", Toast.LENGTH_LONG).show()
}
//앱에 필요한 권한을 사용자에게 요청하는 시스템 Activity 를 띄우기
ActivityCompat.requestPermissions(
this,
arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION),
REQUEST_LOCATION_PERMISSION_CODE) //프로그래머가 설정한 상수값, 권한요청 응답처리시 사용
//Companion object로 처리
}
ActivityCompat.shouldShowRequestPermissionRationale() 메서드는 사용자가 거부를 했을때 true를 반환 합니다.
권한 요청 응답처리
@ override public void onRequestPermissionResult 메서드 이용 : 사용자 응답을 전달 합니다.
@override
public void onRequsetPermissionResult(int requsetCode,String permissions[], int[] grantResults)
{
switch(requestCode){
case REQUEST_LOCATION_PERMISSION_CODE: {
//requset 가 취소 되면, result 어레이는 empty 입니다.
if(grantResults.length > 0 && grantResults[0] == PackgeManager.PERMISSION_GRANTED)
{
Toast.makeText(this, "승인 허가",Toast.LENGTH_LONG).show()
} else {
Toast.makeText(this, "승인 거부",Toast.LENGTH_LONG).show()
}
return ;
}
}
onRequestPermissionResult 함수는 오버라이드 해야합니다.
권한 재확인 안하기 위한 코드
@SuppressLint("MissingPermission")
이상 입니다.
'안드로이드 프로그래밍[Kotiln Code] > 안드로이드 부분 함수(권한얻기,인텐트, 데이터바인딩)' 카테고리의 다른 글
안드로이드 앱 종료 방법 (0) | 2020.03.30 |
---|---|
TODO 사용 하기 (0) | 2020.03.30 |
LocationManager 이용 해서 기기 위치 정보 가져 오기 (0) | 2020.03.25 |
AlertDialog 와 SnackBar (0) | 2020.03.24 |
인텐트 이동 및 간단한 사용법 (0) | 2020.03.24 |