Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Flutter Bluetooth Permissions Issue on Android 13: Unable to Scan for Devices

I am developing a Flutter app that utilizes Bluetooth functionality, specifically Bluetooth scanning, using the flutter_blue package. I have encountered an issue related to Bluetooth permissions on Android 13.

Problem Description:

In my AndroidManifest.xml file, I have included the following permissions:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

In my Flutter code, I am using the permission_handler package to request Bluetooth scanning and location permissions. Here’s my code snippet:

@override
void initState() {
  super.initState();
  requestBluetoothPermission();
}

void requestBluetoothPermission() async {
  PermissionStatus bluetoothStatus = await Permission.bluetoothScan.request();
  PermissionStatus locationStatus = await Permission.location.request();

  if (bluetoothStatus.isGranted && locationStatus.isGranted) {
    scanDevices();
  } else {  }

}

void scanDevices() {
  try {
    flutterBlue.startScan();
    flutterBlue.scanResults.listen((results) {
      setState(() {
        _scannedDevices = results;
        print("Bluetooth scan results: ${results.toString()}");
      });
    });
  } catch(e) {
    print("Error during Bluetooth scanning: $e");
  }
}

Issue: Despite requesting the necessary permissions, I am still encountering the following error:

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled     
Exception:PlatformException(startScan, Need android.permission.BLUETOOTH_SCAN 
permission for     AttributionSource { uid = XXXX, packageName = XXXX, attributionTag 
= null, token = android.os.BinderProxy@XXXX, next = null }: GattService 
registerScanner, java.lang.SecurityException: Need android.permission.BLUETOOTH_SCAN 
permission for AttributionSource { uid = XXXX, packageName = XXXX, attributionTag = 
null, token = android.os.BinderProxy@XXXX, next = null }: GattService registerScanner
Additional Information:

Flutter version: 3.13.2
flutter_blue package version: 0.8.0
permission_handler package version: 11.0.0
Android version: 13

I have already checked the permissions in my AndroidManifest.xml file and ensured that I am requesting them correctly in my Flutter code. What could be causing this issue, and how can I resolve it to successfully scan for Bluetooth devices on Android 13?

Thank you for your assistance!

>Solution :

As stated in the official guide, you have to include BLUETOOTH_SCAN permission in order to be able to scan Bluetooth devices.

If your app looks for Bluetooth devices, such as BLE peripherals, declare the BLUETOOTH_SCAN permission.

So in your manifest it should look like this:

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading