Coverage Summary for Class: RolePermissionHandler (kr.open.library.simple_ui.core.permissions.handler)

Class Class, % Method, % Branch, % Line, % Instruction, %
RolePermissionHandler 0% (0/1) 0% (0/4) 0% (0/8) 0% (0/17) 0% (0/86)


 package kr.open.library.simple_ui.core.permissions.handler
 
 import android.app.role.RoleManager
 import android.content.Context
 import android.content.Intent
 import android.os.Build
 import kr.open.library.simple_ui.core.extensions.conditional.checkSdkVersion
 import kr.open.library.simple_ui.core.extensions.trycatch.safeCatch
 
 /**
  * Handles role availability checks and request intents.<br><br>
  * Role 사용 가능 여부 확인과 요청 인텐트를 처리합니다.<br>
  *
  * @param context Context used to access RoleManager.<br><br>
  *                RoleManager 접근에 사용하는 컨텍스트입니다.<br>
  */
 class RolePermissionHandler(
     private val context: Context,
 ) {
     /**
      * Returns whether the role is available on this device.<br><br>
      * 해당 기기에서 Role이 사용 가능한지 반환합니다.<br>
      *
      * @param role Role name string to inspect.<br><br>
      *             확인할 Role 문자열입니다.<br>
      * @return Return value: true when available, false otherwise. Log behavior: none.<br><br>
      *         반환값: 사용 가능하면 true, 아니면 false. 로그 동작: 없음.<br>
      */
     fun isRoleAvailable(role: String): Boolean = safeCatch(defaultValue = false) {
         val res = checkSdkVersion<Boolean>(Build.VERSION_CODES.Q) {
             val roleManager = context.getSystemService(RoleManager::class.java) ?: return@safeCatch false
             return@safeCatch roleManager.isRoleAvailable(role) ?: false
         }
         if (res == null) return@safeCatch false
         res
     }
 
     /**
      * Returns whether the app currently holds the role.<br><br>
      * 앱이 현재 Role을 보유하고 있는지 반환합니다.<br>
      *
      * @param role Role name string to inspect.<br><br>
      *             확인할 Role 문자열입니다.<br>
      * @return Return value: true when held, false otherwise. Log behavior: none.<br><br>
      *         반환값: 보유 중이면 true, 아니면 false. 로그 동작: 없음.<br>
      */
     fun isRoleHeld(role: String): Boolean = safeCatch(defaultValue = false) {
         val res = checkSdkVersion<Boolean?>(Build.VERSION_CODES.Q) {
             val roleManager = context.getSystemService(RoleManager::class.java) ?: return@safeCatch false
             roleManager.isRoleHeld(role)
         }
         if (res == null) return@safeCatch false
         res
     }
 
     /**
      * Creates a role request intent when supported.<br><br>
      * 지원되는 경우 Role 요청 인텐트를 생성합니다.<br>
      *
      * @param role Role name string to request.<br><br>
      *             요청할 Role 문자열입니다.<br>
      * @return Return value: role request intent or null when unavailable. Log behavior: none.<br><br>
      *         반환값: Role 요청 인텐트 또는 미지원 시 null. 로그 동작: 없음.<br>
      */
     fun createRequestIntent(role: String): Intent? = safeCatch(defaultValue = null) {
         return@safeCatch checkSdkVersion<Intent>(Build.VERSION_CODES.Q) {
             val roleManager = context.getSystemService(RoleManager::class.java) ?: return@safeCatch null
             roleManager.createRequestRoleIntent(role)
         }
     }
 }