Android > 권한설정

Redjini WiKi
< java‎ | android
Acepro (토론 | 기여)님의 2017년 3월 2일 (목) 06:38 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


권한 확인
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
    //권한 있음
}else{
    //권한 없음
}
해당 권한이 없을 경우 ActivityCompat.requestPermissions 메서드를 이용해 사용자에게 해당 권한을 요청해야함.
권한 요청
ActivityCompat.requestPermissions(this, new String[]{
    Manifest.permission.READ_PHONE_STATE,
    Manifest.permission.READ_EXTERNAL_STORAGE ,
    Manifest.permission.WRITE_EXTERNAL_STORAGE,
    Manifest.permission.READ_CONTACTS}, REQUEST_CODE);
권한 요청에 대한 결과는 요청한 Activity의 onRequestPermissionsResult 로 전달됨.
응답 확인
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
     if (requestCode == REQUEST_CODE) {
          //permissions에 대해서 각각 권한 승인 여부 확인
     }
}
requestPermissions 에서 요청한 권한 정보가 permissions에 전달 되므로 각각에 대해서 승인 여부를 확인해야함
앱 정보 실행하기
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + getPackageName()));
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK	);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY	);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

startActivityForResult(intent, REQUEST_SETTINGS);
참고