Android 수 동 으로 판단 처리 권한 가 져 오기
//
int checkSelfPermission(String)
//
void requestPermissions(int, String...)
//
boolean shouldShowRequestPermissionRationale(String)
//
void onRequestPermissionsResult(int,String[],int[])
상수 표시 권한 이 있 는 지 여부:
PackageManager.PERMISSION_DENIED: 。
PackageManager.PERMISSION_GRANTED:
상기 네 가지 방법 중 앞의 세 가지 방법 은 슈퍼 port-v4 의 Activity Compat 에 모두 있 으 므 로 호 환 라 이브 러 리 의 방법 을 사용 하 는 것 을 권장 합 니 다.마지막 방법 은 사용자 가 권한 을 부여 하거나 거부 할 때 시스템 이 Activity 나 Fragment 의 방법 을 되 돌려 주 는 것 입 니 다.1. checkSelfPermission(String)
검사 권한
1.특정한 권한 의 현재 상 태 를 검사 합 니 다.권한 을 요청 할 때 이 권한 이 사용자 에 게 권한 을 수 여 받 았 는 지 확인 해 야 합 니 다.권한 을 수 여 받 은 권한 중복 신청 은 사용 자 를 귀 찮 게 할 수 있 습 니 다.
2.이 방법 은 하나의 매개 변 수 는 권한 이름 이 고 int 의 반환 값 이 있 습 니 다.이 값 으로 위 에서 언급 한 두 상수 와 비교 하여 검사 권한 의 현재 상 태 를 판단 할 수 있 습 니 다.
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// , 。
}else{
// 。
}
2. requestPermissions(int, String…)신청 권한
사용자 에 게 몇 가지 권한 을 부여 해 달라 고 요청 합 니 다.호출 후 시스템 은 사용자 에 게 권한 을 요청 하 는 알림 대화 상 자 를 표시 합 니 다.App 은 이 대화 상 자 를 설정 하고 수정 할 수 없습니다.사용자 에 게 이 권한 과 관련 된 정보 나 설명 이 필요 하 다 면 requestPermissions()를 호출 하기 전에 처리 해 야 합 니 다.
이 방법 은 두 개의 인자 가 있 습 니 다.
int requestCode:onRequest Permissions Result()를 되 돌 릴 때 어떤 권한 수여 신청 의 반전 인지 판단 합 니 다.
String[]permissions:권한 배열,신청 할 권한 의 배열 입 니 다.
이 방법 은 비동기 이기 때문에 반환 값 이 없습니다.사용자 가 권한 수여 작업 을 처리 할 때 Activity 나 Fragment 의 onRequestPermissions Result()방법 을 되 돌려 줍 니 다.
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_CONTACTS}, MMM);
3. onRequestPermissionsResult(int,String[],int[])처리 권한 결과 리 셋
1.이 방법 은 Activity/Fragment 에서 다시 써 야 합 니 다.사용자 가 권한 수여 작업 을 처리 하면 시스템 이 자동 으로 이 방법 을 되 돌려 줍 니 다.
2.이 방법 은 세 가지 인자 가 있 습 니 다.
int requestCode:requestPermissions()를 호출 할 때의 첫 번 째 인자 입 니 다.
String[]permissions:권한 배열,requestPermissions()를 호출 할 때 두 번 째 인자 입 니 다.
int[]grantResults:권한 수여 결과 배열 은 permissions 에 대응 하고 구체 적 인 값 은 위 에서 언급 한 Package Manager 의 두 상수 와 비교 합 니 다.
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MMM: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// , 。
} else {
// , , 。
}
return;
}
}
}
4. shouldShowRequestPermissionRationale(String)요청 권한 을 표시 할 지 여부
1.첫 번 째 요청 권한 을 거 절 했 을 때 사용 자 는 shouldShowRequestPermission Rationale()을 호출 한 후 true 로 돌아 가 이 권한 이 왜 필요 한 지 설명 해 야 합 니 다.
2.사용자 가 첫 번 째 권한 을 거부 한 후 다음 에 다시 신청 할 때 권한 을 수 여 받 은 dialog 에'알 리 지 않 기'옵션 이 나타 납 니 다.선택 하면 다음 신청 은 사용자 에 게 알 리 지 않 습 니 다.
3.두 번 째 요청 권한 을 거 절 했 을 때 사용 자 는'알림 없 음'옵션 을 선택 하고 shouldShowRequestPermission Rationale()을 호출 한 후 false 로 돌아 갑 니 다.
4.장치 정책 은 현재 응용 프로그램 에서 이 권한 을 가 져 오 는 권한 을 금지 합 니 다.shouldShowRequestPermission Rationale()는 false 로 돌아 갑 니 다.
5.이 알림 의 장점 은 사용자 가 한 번 의 권한 을 거절 한 후에 저희 가 다시 신청 할 때 이 권한 의 중요성 을 일 깨 워 줄 수 있 습 니 다.다시 신청 해 야 할 때 사용 자 는'알 리 지 않 음'을 선택 하고 결단 을 내 려 다음 신청 권한 이 직접 실 패 했 습 니 다.
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {// 。
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS)) {
// , , 。
} else {
// 。
ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_CONTACTS}, MMM);
}
}
...
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MMM: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 。
} else {
// 。
}
return;
}
}
}
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.