투케이2K

464. (kotlin/코틀린) [유틸 파일] : getNearDeviceSearchPermissionEnable - 근처 기기 권한 부여 체크 본문

Kotlin

464. (kotlin/코틀린) [유틸 파일] : getNearDeviceSearchPermissionEnable - 근처 기기 권한 부여 체크

투케이2K 2024. 3. 21. 21:07
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [Android 12] : [근처 기기 권한 부여 상태 확인]
        // -----------------------------------------------------------------------------------------
        fun getNearDeviceSearchPermissionEnable(mContext: Context): Boolean {

            /**
             * -------------------------------------------
             * [호출 방법]
             *
             * C_Permission.getNearDeviceSearchPermissionEnable(A_Intro@this)
             * -------------------------------------------
             * [필요 권한] : [사전 AndroidManifest.xml 파일에 해당 권한 추가 필요]
             *
             * <uses-permission android:name="android.permission.BLUETOOTH_SCAN"></uses-permission>
             * <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE"></uses-permission>
             * <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"></uses-permission>
             * -------------------------------------------
             * [참고 사항] :
             *
             * 해당 권한 체크로 compileSdk 가 30 이하인 경우에도
             * 근처 기기 권한 부여 상태 체크 가능
             * 
             * 안드로이드 12 이상 기기에서 권한이 부여되어있지 않더라도 해당 함수 호출 시 자동 권한 창 호출
             * -------------------------------------------
             */

            // [Context 지정]
            context = mContext

            // [초기 리턴 변수 선언]
            var resultData = false

            // [로직 처리 수행 실시]
            var osVersion = -1
            try {
                osVersion = Build.VERSION.RELEASE.toInt()

                if (osVersion >= 12) {
                    val bluetoothManager = mContext.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
                    val ble_Adapter = bluetoothManager.adapter
                    val pairedDevices = ble_Adapter.bondedDevices
                    resultData = true
                } else {
                    if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
                        && ContextCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
                        && ContextCompat.checkSelfPermission(mContext, Manifest.permission.BLUETOOTH) == PackageManager.PERMISSION_GRANTED) {
                        resultData = true
                    }
                }
                if (resultData == true) {

                    // ===============================================================
                    S_Log._F_(mContext, "근처 기기 권한 : 정상 부여", null)
                    // ===============================================================
                } else {

                    // ===============================================================
                    S_Log._F_(mContext, "근처 기기 권한 : 비정상 상태 (Not Grant)", null)
                    // ===============================================================
                }
            } catch (e: Exception) {
                S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e)

                // ===============================================================
                S_Log._F_(mContext, "근처 기기 권한 : 비정상 상태 (Exception)", null)
                // ===============================================================
            }

            // [결과 리턴 실시]
            return resultData
        }
 

[결과 출력]

 

W///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.kotlinproject.C_Permission$Companion.getNearDeviceSearchPermissionEnable(C_Permission.kt:1257)]
I/: ----------------------------------------------------
I/: [LOG :: NOW TIME :: 2024-03-21 15:58:50 목요일]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 근처 기기 권한 : 정상 부여]
W///===========//: ================================================

 

반응형
Comments