Search code examples
flutterdartflutter-dependenciesflutter-test

The android permission BLUETOOTH_SCAN not working in android 12 in flutter


when I running the my project showing this error

`D/BluetoothAdapter(25841): isLeEnabled(): ON
I/flutter (25841): Error starting scan.
E/flutter (25841): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(startScan, Need android.permission.BLUETOOTH_SCAN permission for android.content.AttributionSource@bb6a5b7c: GattService registerScanner, null, null)
E/flutter (25841): #0      BluetoothManager.scan (package:flutter_bluetooth_basic/src/bluetooth_manager.dart:85:7)
E/flutter (25841): <asynchronous suspension>
E/flutter (25841):

`

I added `

<uses-permission android:name="android.permission.BLUETOOTH"
        android:maxSdkVersion="30"
        tools:targetApi="donut" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
        android:maxSdkVersion="30"
        tools:targetApi="donut" />
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN"
        android:usesPermissionFlags="neverForLocation"
        android:maxSdkVersion="30"
        tools:targetApi="31" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

` this permissions in androidmanifest but still the same error is showing and not taking any blue tooth devices.


Solution

  • Remove the android:maxSdkVersion="30" from your permission requests.

    Using it like this limits the permission request to SDK version 30 and older.

    Also, you only need BLUETOOTH_SCAN and BLUETOOTH_CONNECT for SDK >30. Check the documentation for more information.

    Change your code to the following and it should work:

        <uses-permission android:name="android.permission.BLUETOOTH"
            android:maxSdkVersion="30"/>
        <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
            android:maxSdkVersion="30"/>
        <uses-permission android:name="android.permission.BLUETOOTH_SCAN"
            android:usesPermissionFlags="neverForLocation"
            tools:targetApi="31" />
        <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
        <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" 
            android:maxSdkVersion="30"/>