cordova-plugin-bluetoothle icon indicating copy to clipboard operation
cordova-plugin-bluetoothle copied to clipboard

Bluetooth

Open Covarians opened this issue 1 year ago • 1 comments

Hello, I am using this superb plugin on an Android 12 device (SDK31+) After bluetoothle.initialize I request the SCAN permission and then the CONNECT permissions and get responses that these two permissions are granted succesfully. I can see on the android apps permission page that both Location and Nearby devices permission are allowed for my application.

But when I start the scan process I get the following error message

[BLE] ERROR in startScanning: "Need android.permission.BLUETOOTH_SCAN permission for AttributionSource { uid = 10388, packageName = com.covarians.aexpad, attributionTag = null, token = android.os.BinderProxy@729d2, next = null }: GattService registerScanner"

My AndoidManifest.xml file includes:

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

I tried the different variations recommanded but without any success

If I disallow and reallow manually the Nearby Device permission it works.

Any idea how to solve that strange behaviour.

Thanks a lot.

FG

Covarians avatar Mar 22 '23 17:03 Covarians

Hi, Have you tried requesting the ACCESS_FINE_LOCATION permission manually? If you haven't, I'll show you how I've implemented it in my app. In the page builder:

this.plt.ready().then((readySource) => { console.log('Platform ready from', readySource); this.androidPermissions .checkPermission( this.androidPermissions.PERMISSION.ACCESS_FINE_LOCATION ) .then( (result) => this.bluetoothService.initBLE(result), (err) => this.androidPermissions.requestPermission( this.androidPermissions.PERMISSION.ACCESS_FINE_LOCATION ) ); });

Dependencies:

(public bluetoothle: BluetoothLE,
public plt: Platform,
private androidPermissions: AndroidPermissions)

I hope this help you!

marcui13 avatar Jul 25 '23 13:07 marcui13