투케이2K

755. (Android/Java) [유틸 파일] : getNearDeviceSearchPermissionEnable - 근처 기기 권한 부여 체크 본문

Android

755. (Android/Java) [유틸 파일] : getNearDeviceSearchPermissionEnable - 근처 기기 권한 부여 체크

투케이2K 2024. 3. 21. 21:04

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

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

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

        // [Context 지정]
        context = mContext;

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

        // [로직 처리 수행 실시]
        int osVersion = -1;
        try {
            osVersion = Integer.parseInt(Build.VERSION.RELEASE);

            if (osVersion >= 12){
                BluetoothManager bluetoothManager = (BluetoothManager) mContext.getSystemService(Context.BLUETOOTH_SERVICE);
                BluetoothAdapter ble_Adapter = bluetoothManager.getAdapter();
                Set<BluetoothDevice> pairedDevices = ble_Adapter.getBondedDevices();

                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 (Exception e){
            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.javaproject.C_Permission.getNearDeviceSearchPermissionEnable(C_Permission.java:1538)]
I/: ----------------------------------------------------
I/: [LOG :: NOW TIME :: 2024-03-21 15:57:57 목요일]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 근처 기기 권한 : 정상 부여]
W///===========//: ================================================

 

반응형
Comments