반응형

안드로이드 6.0 이상부터 필요한 권한 획득 코드

  • 예제는 폰상태, 카메라, 오디오녹음 세개의 권한을 요청

define

public static final int PERMISSION_1 = 10000;

onCreate

if (checkPermission(new String[] {Manifest.permission.READ_PHONE_STATE, Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO}, PERMISSION_1)) {
initPrcss();
}

권한 요청 Function

@TargetApi(Build.VERSION_CODES.M)
public boolean checkPermission(String[] permissions, int type) {
//type : PERMISSION_1이 넘어옴
try {
// 안드로이드 6.0 미만 (마시멜로 미만) 버전 퍼미션 체크 패스
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return true;
}
boolean isNotGrant = false;
// 필요한 권한 중 거부되어 있는 권한이 있는지 체크
for(String permission : permissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
isNotGrant = true;
break;
}
}
if (isNotGrant) {
// 안드로이드 권한 요청
ActivityCompat.requestPermissions(this, permissions, type);
return false;
}
}catch (Exception e) {
e.printStackTrace();
}
return true;
}

권한 요청 응답

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
try {
ArrayList<String> deniedPermissionArrayList = new ArrayList<String>();
boolean grant = true;
int i = 0;
// 퍼미션이 모두 승인되었다면, grant = true
for (int isGrant : grantResults) {
if (isGrant != PackageManager.PERMISSION_GRANTED) {
grant = false;
deniedPermissionArrayList.add(permissions[i]);
}
i++;
}
// 권한을 승인했을 경우
if (grant) {
initPrcss();
} else {
failPrcss();
}
} catch (Exception e) {
e.printStackTrace();
}
}

권한 요청 성공/실패 시의 Function

//성공시
void initPrcss() {
//...
}
//실패시
void failPrcss() {
//...
}

(참고) 앱설정 이동 : 권한획득 실패시에 이동을 위해

Intent intent = new Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
intent.setFlags(FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

 

반응형

'안드로이드' 카테고리의 다른 글

Android Webview(Remote, Local)  (2) 2021.11.14
Android Keyboard Show/Hide 이벤트 수신  (0) 2021.11.14
Android adb 사용  (0) 2021.11.14
Android Version List  (1) 2021.11.14
Android RecyclerView StaggeredGrid  (0) 2021.11.14
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기