Bluetooth ist die Hauptabhängigkeit unserer App. Wir versuchen also bereits, neue Bluetooth-Berechtigungen für Android 12 zu implementieren. Unsere einzige Ressource ist Android-Entwickler Neue Bluetooth-Berechtigungen in Android 12. Es heißt nur Berechtigungen hinzufügen
“android.permission.BLUETOOTH_CONNECT”
“android.permission.BLUETOOTH_SCAN”
Ich füge hinzu und ich habe Laufzeitberechtigungen für beide und natürlich den Standort (üblich wie vor 12)).
Es gibt keine andere Änderung in meiner Codebasis. Sollte sein? Ich weiß nicht. Das Problem ist also, dass meine App das BLE-Gerät nicht finden kann. Ich konnte den Grund nicht finden.
Haben Sie Vorschläge oder Ressourcen?
Kann das BLE-Gerät auch auf Android 12 oder vor 12 nicht finden?
– Dinkar Kumar
7. Juni 2021 um 1:51 Uhr
Ich versuche, diese Berechtigungen auch hinzuzufügen, aber sie existieren nicht in Android Studio … Ich sehe nur die alten (BLUETOOTH, BLUETOOTH_ADMIN, BLUETOOTH_ADMIN_PRIVILEGED). Ich setze meine targetSdkVersion auf “S”, meine compileSdkVersion auf “android-S” und meine buildToolsVersion auf “3.0.0-rc5”. irgendeine Idee?
– oder_dvir
11. Juni 2021 um 11:19 Uhr
Ich kann es sehen. Meine Einstellungen wie folgt: compileSdkVersion “android-S” buildToolsVersion “30.0.3” targetSdkVersion 31
– Mustafa Kuloglu
14. Juni 2021 um 11:26 Uhr
Schraube UIX
100% funktionierende Lösung: kein Plug-in von Drittanbietern erforderlich
Manifestcode:
<!--BLUETOOTH PERMISSION-->
<!-- Request legacy Bluetooth permissions on older devices. -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!-- Needed only if your app looks for Bluetooth devices.
If your app doesn't use Bluetooth scan results to derive physical
location information, you can strongly assert that your app
doesn't derive physical location. -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<!-- Needed only if your app makes the device discoverable to Bluetooth
devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<!-- Needed only if your app communicates with already-paired Bluetooth
devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<!--bibo01 : hardware option-->
<uses-feature android:name="android.hardware.bluetooth" android:required="false"/>
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false"/>
Kotlin-Code: //android12+ prüfen
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
requestMultiplePermissions.launch(arrayOf(
Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT))
}
else{
val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
requestBluetooth.launch(enableBtIntent)
}
....................................................
private var requestBluetooth = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == RESULT_OK) {
//granted
}else{
//deny
}
}
private val requestMultiplePermissions =
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
permissions.entries.forEach {
Log.d("test006", "${it.key} = ${it.value}")
}
}
Funktioniert gut. Aber warum wird die Nearbyshare-Berechtigung angezeigt?
– Raj
15. Februar um 12:43 Uhr
Funktioniert bei mir nicht ganz, ich verwende Android 10. Ich sehe kein Popup, das nach Berechtigungen fragt, ich komme sofort zu dem Teil, in dem die Berechtigungen erteilt werden.
– Okramotte
27. März um 15:08 Uhr
@RaJ benötigt dieses Flag
– RonaldPaguay
30. Mai um 21:47 Uhr
Die Anwendung stürzt ab, wenn Sie die Berechtigung zum ersten Mal nicht zulassen. Danach konnte der Berechtigungsdialog nicht abgerufen werden und wurde jedes Mal abgestürzt.
– Bhoomika Chauhan
3. Juni um 7:44
Teilen Sie Ihren Code in einem Stack oder Git-Link, ich helfe Ihnen, @Bhoomika Chauhan
– Schraube UIX
3. Juni um 16:05 Uhr
HAZEEM JOONUS
Das hat bei mir funktioniert,
Fügen Sie im Manifest die folgenden Berechtigungen hinzu:
Wenn Sie möchten, dass Ihre App die Geräteerkennung initiiert oder Bluetooth-Einstellungen bearbeitet, müssen Sie zusätzlich zur BLUETOOTH-Berechtigung die BLUETOOTH_ADMIN-Berechtigung deklarieren. Die meisten Apps benötigen diese Berechtigung nur, um lokale Bluetooth-Geräte erkennen zu können. Verwenden Sie die anderen durch diese Berechtigung gewährten Fähigkeiten nicht, es sei denn, die App ist ein „Energiemanager“, der die Bluetooth-Einstellungen auf Benutzeranfrage ändert. Deklarieren Sie die Bluetooth-Berechtigung(en) in Ihrer App-Manifestdatei
in Ihrer Manifestdatei, aber Sie haben es nicht hinzugefügt, um andere Geräte zu entdecken. Ich denke, dies ist die Ressource Ihres Problems
Dies war ein Plattformfehler. Google hat den Fehler in der neuen Beta-Version von Android 12 behoben.
Hast du einen Link zu dem Fehler?
– Minas Mina
30. Mai um 12:55 Uhr
SHANNAX
Ich hatte einen Fehler, bei dem BLUETOOTH_ADVERTISING im Android-Manifest fehlte, als ich zu Android 12 wechselte
Im Grunde habe ich nur hinzugefügt checkSelfPermission(Manifest.permission.BLUETOOTH) == PackageManager.PERMISSION_GRANTED in meinen Bedingungen wo startAdvertising hieß.
Hast du einen Link zu dem Fehler?
– Minas Mina
30. Mai um 12:55 Uhr
Team3537
Ich bin mir nicht sicher, ob sie etwas in Bezug auf Bluetooth-Änderungen angekündigt haben, aber wenn nichts anderes hilft, haben sie dies kürzlich eingeführt, was in Ihrem Anwendungsfall hilfreich sein könnte, es sei denn, Sie machen komplexere Sachen.
Kann das BLE-Gerät auch auf Android 12 oder vor 12 nicht finden?
– Dinkar Kumar
7. Juni 2021 um 1:51 Uhr
Ich versuche, diese Berechtigungen auch hinzuzufügen, aber sie existieren nicht in Android Studio … Ich sehe nur die alten (BLUETOOTH, BLUETOOTH_ADMIN, BLUETOOTH_ADMIN_PRIVILEGED). Ich setze meine targetSdkVersion auf “S”, meine compileSdkVersion auf “android-S” und meine buildToolsVersion auf “3.0.0-rc5”. irgendeine Idee?
– oder_dvir
11. Juni 2021 um 11:19 Uhr
Ich kann es sehen. Meine Einstellungen wie folgt: compileSdkVersion “android-S” buildToolsVersion “30.0.3” targetSdkVersion 31
– Mustafa Kuloglu
14. Juni 2021 um 11:26 Uhr