randdusing / cordova-plugin-bluetoothle

Bluetooth Low Energy Phonegap Plugin
803 stars 353 forks source link

Bluetooth #751

Open Covarians opened 1 year ago

Covarians commented 1 year ago

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_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

marcui13 commented 1 year ago

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!