Notice
Recent Posts
Recent Comments
Link
투케이2K
705. (Android/Java) [유틸 파일] getAppPermissionsList - 앱에 부여된 퍼미션 권한 리스트 확인 본문
Android
705. (Android/Java) [유틸 파일] getAppPermissionsList - 앱에 부여된 퍼미션 권한 리스트 확인
투케이2K 2023. 12. 4. 20:33[개발 환경 설정]
개발 툴 : AndroidStudio
[소스 코드]
// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [앱에 부여된 권한 리스트 확인]
// -----------------------------------------------------------------------------------------
public static Map<String, List<String>> getAppPermissionsList(Context mContext){
/**
* -------------------------------------------
* [호출 방법] :
*
* C_Permission.getAppPermissionsList(A_Intro.this);
* -------------------------------------------
* [리턴 데이터] :
*
* I/: [LOG :: {
* "denied": [
* "android.permission.SYSTEM_ALERT_WINDOW",
* "android.permission.WRITE_EXTERNAL_STORAGE",
* "android.permission.READ_EXTERNAL_STORAGE",
* "android.permission.PACKAGE_USAGE_STATS",
* "android.permission.FOREGROUND_SERVICE_LOCATION"
* ],
* "granted": [
* "android.permission.READ_PHONE_STATE",
* "android.permission.INTERNET",
* "android.permission.ACCESS_WIFI_STATE",
* "android.permission.CHANGE_WIFI_STATE",
* "android.permission.CHANGE_NETWORK_STATE",
* "android.permission.ACCESS_NETWORK_STATE",
* "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS",
* "android.permission.RECEIVE_BOOT_COMPLETED",
* "android.permission.FOREGROUND_SERVICE",
* "com.google.android.c2dm.permission.RECEIVE",
* "android.permission.CHANGE_WIFI_MULTICAST_STATE",
* "com.example.javaproject.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
* ]
* }]
* -------------------------------------------
* */
// [Context 지정]
context = mContext;
// [리턴 변수 선언]
Map<String, List<String>> returnData = new HashMap<>();
// [로직 처리 수행 실시]
try {
List<String> granted = new ArrayList<>(); // [권한 허용 리스트]
List<String> denied = new ArrayList<>(); // [권한 거부 리스트]
// [PackageInfo 선언]
PackageInfo pi = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
pi = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), PackageManager.PackageInfoFlags.of((long) PackageManager.GET_PERMISSIONS));
}
else {
pi = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), PackageManager.GET_PERMISSIONS);
}
// [반복문 수행하면서 권한 확인]
for (int i = 0; i < pi.requestedPermissions.length; i++) {
// [and 연산 : 모두 참일 때 true] : [요청 퍼미션 값이 있고, 요청된 권한이 현재 애플리케이션에 부여되어 있는 경우]
if ((pi.requestedPermissionsFlags[i] & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) {
granted.add(pi.requestedPermissions[i]); // [허용 리스트 삽입]
}else {
denied.add(pi.requestedPermissions[i]); // [거부 리스트 삽입]
}
}
// [리턴 값에 삽입]
returnData.put("granted", granted);
returnData.put("denied", denied);
}
catch (Exception e){
e.printStackTrace();
}
// [로그 출력]
//*
// ===============================================================
S_Log._D_("앱에 부여된 권한 리스트 확인", new String[]{
new Gson().newBuilder().setPrettyPrinting().create().toJson(returnData)
});
// ===============================================================
// */
// [리턴 반환]
return returnData;
}
반응형
'Android' 카테고리의 다른 글
Comments