Notice
Recent Posts
Recent Comments
Link
투케이2K
444. (kotlin/코틀린) [유틸 파일] getAppPermissionsList - 앱에 부여된 퍼미션 권한 리스트 확인 본문
Kotlin
444. (kotlin/코틀린) [유틸 파일] getAppPermissionsList - 앱에 부여된 퍼미션 권한 리스트 확인
투케이2K 2023. 12. 4. 20:34[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [앱에 부여된 권한 리스트 확인]
// -----------------------------------------------------------------------------------------
fun getAppPermissionsList(mContext: Context): Map<String, List<String>> {
/**
* -------------------------------------------
* [호출 방법] :
*
* 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
// [리턴 변수 선언]
val returnData: MutableMap<String, List<String>> = HashMap()
// [로직 처리 수행 실시]
try {
val granted: MutableList<String> = ArrayList() // [권한 허용 리스트]
val denied: MutableList<String> = ArrayList() // [권한 거부 리스트]
// [PackageInfo 선언]
var pi: PackageInfo? = null
pi = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
mContext.packageManager.getPackageInfo(mContext.packageName, PackageManager.PackageInfoFlags.of(PackageManager.GET_PERMISSIONS.toLong()))
} else {
mContext.packageManager.getPackageInfo(mContext.packageName, PackageManager.GET_PERMISSIONS)
}
// [반복문 수행하면서 권한 확인]
for (i in pi!!.requestedPermissions.indices) {
// [and 연산 : 모두 참일 때 true] : [요청 퍼미션 값이 있고, 요청된 권한이 현재 애플리케이션에 부여되어 있는 경우]
if (pi.requestedPermissionsFlags[i] and PackageInfo.REQUESTED_PERMISSION_GRANTED != 0) {
granted.add(pi.requestedPermissions[i]) // [허용 리스트 삽입]
} else {
denied.add(pi.requestedPermissions[i]) // [거부 리스트 삽입]
}
}
// [리턴 값에 삽입]
returnData["granted"] = granted
returnData["denied"] = denied
} catch (e: Exception) {
e.printStackTrace()
}
// [로그 출력]
//*
// ===============================================================
S_Log._D_("앱에 부여된 권한 리스트 확인", arrayOf(
Gson().newBuilder().setPrettyPrinting().create().toJson(returnData)
))
// ===============================================================
// */
// [리턴 반환]
return returnData
}
반응형
'Kotlin' 카테고리의 다른 글
Comments