Try this one (tested on Android 9, 10, 11, 12):
BLE_permissions_allAndroidVersions.aia (191.7 KB)
The >
operator will coerce the strings to numbers so what I proposed will work so long as the version number is specified as major.minor and minor never goes above 10, but 4.2.2 is not a number so the block will raise an error.
Apart from that, the
minSdkVersion
is not21
when using the BLE extension:
While the BLE extension does not force a minSdk, the logic of the component is written such that its blocks do nothing on versions less than 21. We didn't want to surprise people who added the BLE extension to their app with the increase to minSdk 21, especially if the BLE functionality might be optional. Of course, this decision made way more sense when BLE first came out and most phones didn't support it yet.
Of course there is a way to do it without an extension.
Here is a template to get the API level of an Android device (starting with API 7, minSdkVersion of AI2) without an extension: API_level.aia (2.7 KB) [grafik]
Hi,
please help i tried your code Anke
but it doesn't list my hc-05
it exists on android and i can pair but in app inventor application it is not listed
il m'affiche le message suivant dans appinventor
Need android.permission.BLUETOOTH_SCAN permission for AttributionSource { uid = 10686, packageName = edu.mit.appinventor.aicompanion3, attributionTag = null, token = android.os.BinderProxy@9e88c90, next = null }: GattService registerScanner
Note: Vous n'allez pas voir une autre erreur rapportée pour 5 secondes.
aide svp
BLUETOOTH_SCAN
see this thread
The BluetoothLE extension has not yet been updated to support Android 12. As a workaround, you can add the BluetoothClient component to your project (which will add the right permissions to the project) and then use the screen's AskForPermission block to request the BLUETOOTH_SCAN permission. Usually the extension would do this all on your behalf but I have not yet had time to update the extension.
Taifun
PS: I now moved youor question and related answers to the correct thread...
This is an issue related to the Android 12 update. The currently published BluetoothLE extension is not aware of Google's latest changes to Bluetooth, and so it fails for that reason. You should be able to use the AskForPermission block to request the BLUETOOTH_SCAN and BLUETOOTH_CONNECT permissions to connect to BLE devices on Android 12+.
Edit: I should mention that I am in the process of updating the BLE extension to address the changes in Android 12. Please keep an eye on the IOT category of this community for the update announcement.
bravo Anke
je vous remercie pour l'effort fournis
normalement ca va bien marcher
mais a quoi sert l'extension GetApilevel1
merci infiniment
GetApilevel
This is an extension to get the API level of the device from the Android version that is currently running. de.bodymindpower.GetApiLevel.aix (4.8 KB) That's all: [grafik] Update (Dec. 30, 2021, ver 3): GetApiLevel_3.aix (5.0 KB) [grafik]
Great, thanks, this saved me.
Hi Anke, your aia blocks worked fine with two synchronised BLE devices and only needed to be implemented once, many thanks, Peter
Thanks, it helped me as well.
Hi.
Thanks to Anke's help, it is getting better, but with Android 11 sdk v30,I have the msg that the permission ACCESS_FINE_LOCATION has been denied and that I should enable it in the app settings.
It aready asked for granting access to location right before ( the "common" location request ) so the main location authorization is there.
I have read on Internet that for Android 11, on Java; it also needs "coarse" and "background" location authorization requesst. I have tried again for "coarse", no change. And I do not see a "background" location inside the available authorization list.
I moved all authorization request blocks up before any scanning operation. No luck.
Thanks to Anke's help, it is getting better, but with Android 11 sdk v30,I have the msg that the permission ACCESS_FINE_LOCATION has been denied and that I should enable it in the app settings.
It aready asked for granting access to location right before ( the "common" location request ) so the main location authorization is there.
It would really help if you provided a screenshot of your relevant blocks, so we can see what you are trying to do, and where the problem may be.
To get an image of your blocks, right click in the Blocks Editor and select "Download Blocks as Image". You might want to use an image editor to crop etc. if required. Then post it here in the community.
Taifun
Trying to push the limits! Snippets, Tutorials and Extensions from Pura Vida Apps by Taifun.
Did you enable Location in the device settings?
Good day Anke.
Yes.