### 이슈

java.lang.SecurityException: Need android.permission.BLUETOOTH_SCAN permission for AttributionSource 
{ uid = 10965, packageName =  ### , attributionTag = null, token = android.os.BinderProxy@b85f7e3, next = null }: 
GattService registerScanner

 

 

### 해결방안 

> 안드로이드 12 적용하면서 Android 12에서는 BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE, BLUETOOTH_CONNECT 권한을 도입합니다. 이를 통해 앱이 위치 정보 액세스 권한을 요청하지 않고도 근처 기기를 검색할 수 있습니다. 이러한 권한을 선언하려면 앱이 Android 12를 타겟팅해야 한다. 

 

1. manifest 적용 

<manifest>
    <!-- Request legacy Bluetooth permissions on older devices. -->
    <uses-permission android:name="android.permission.BLUETOOTH"
                     android:maxSdkVersion="30" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
                     android:maxSdkVersion="30" />

    <!-- Needed only if your app looks for Bluetooth devices.
         You must add an attribute to this permission, or declare the
         ACCESS_FINE_LOCATION permission, depending on the results when you
         check location usage in your app. -->
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

    <!-- Needed only if your app makes the device discoverable to Bluetooth
         devices. -->
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />

    <!-- Needed only if your app communicates with already-paired Bluetooth
         devices. -->
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    ...
</manifest>

 

 

2. 블루투스 사용 권한 요청 시 requestPermission 요청 

if (PermissionType.BLUETOOTH == type ) {
            permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
            permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
            permissions.add(Manifest.permission.BLUETOOTH);
            permissions.add(Manifest.permission.BLUETOOTH_ADMIN);
            permissions.add(Manifest.permission.BLUETOOTH_SCAN);
            permissions.add(Manifest.permission.BLUETOOTH_ADVERTISE);
            permissions.add(Manifest.permission.BLUETOOTH_CONNECT);
    }

 

 

 

https://developer.android.com/about/versions/12/features/bluetooth-permissions?hl=ko 

 

Android 12의 새 블루투스 권한  |  Android Developers

내년 초 출시될 대형 화면용 기능 출시인 12L을 준비하세요. 지금 사용해 보기 Android 12의 새 블루투스 권한 Android 12에서는 BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE, BLUETOOTH_CONNECT 권한을 도입합니다. 이를 통

developer.android.com

 

반응형

+ Recent posts