안드로이드 개발 작업을 하던 도중 Android 신규 버전(P, Q..)에 맞춘 작업을 하다보니
Permission이 추가되는 경우가 종종 있었습니다.
사용자에게 사용권한을 얻어야 하는 경우는
Permission별이 아닌 Permission Group 별로 요청하도록 가이드 되어있는데
같은 Group 내 새로운 권한이 추가되는 상황이 생겼습니다.
Android developer에서는 이 상황에서 아래와 같이 따르도록 명시되어 있습니다.
사용자는 각 권한 그룹에 한 번만 권한을 부여하면 됩니다. 앱이 해당 그룹에 있는 다른 권한(앱 manifest에 나열된 다른 권한)을 요청하면 시스템이 자동으로 권한을 부여합니다. 권한을 요청하면 시스템은 사용자가 시스템 대화상자를 통해 명시적으로 요청을 승인했을 때와 같은 방식으로 onRequestPermissionsResult() 콜백 메서드를 호출하고 PERMISSION_GRANTED를 전달합니다. 참고: 사용자가 이미 동일한 그룹에 있는 다른 권한을 부여했더라도 앱은 필요한 모든 권한을 명시적으로 요청해야 합니다. 향후 Android 릴리스에서는 권한 그룹화도 변경될 수 있습니다. 코드에서 특정 권한이 동일한 그룹에 있다고 혹은 없다고 가정해서는 안 됩니다. |
위 내용에 따라 저는 사용자에게 권한을 요청해야하는 Permission이 어느 Group에 속해있는지 확인이 필요했고, 구글링을 통해 아래 코드를 알아냈습니다.
public String getPermissionGroupInfo(String perm) {
PackageManager pm = mContext.getPackageManager();
PermissionInfo pi = null;
PermissionGroupInfo pgi = null;
try {
// Manifest String permission으로 Permission 정보 얻기
pi = pm.getPermissionInfo( perm, PackageManager.GET_META_DATA);
// Permission 정보로 Permission Group 정보 얻기
pgi = pm.getPermissionGroupInfo( pi.group, PackageManager.GET_META_DATA);
return pgi.loadLabel(pm).toString();
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
도움이 되길 바랍니다.
'Android' 카테고리의 다른 글
[Android] dynamic link 적용 후 폰에 앱이 보이지 않는 문제 (0) | 2023.02.01 |
---|---|
[Android][adb] Wi-Fi Debugging (무선으로 디버깅 하기) (0) | 2019.09.20 |