Warum muss ich Ortungsdienste aktivieren, um ein Bluetooth-Gerät zu koppeln?

Immer wenn ich versuche, mein Samsung Galaxy S6 mit Android 6.0.1 mit einem Bluetooth-fähigen Gerät zu verbinden, fordert es mich auf, "Ortungsdienste" zu aktivieren.

Als ich mich darüber beschwerte, antwortete der Softwareanbieter: "Neueste Updates der Google Android API, die sich auf die Bluetooth LE-Technologie auswirken, erfordern, dass Standortberechtigungen erteilt werden, um die App zu verwenden."

Ich sehe die Notwendigkeit dafür nicht.

Diese Diskussion spricht darüber. Die technische Referenz besagt, dass die Apps bestimmte Berechtigungen haben müssen , nicht dass Ortungsdienste aktiv sein müssen.

Um über Bluetooth- und WLAN-Scans auf die Hardwarekennungen von externen Geräten in der Nähe zugreifen zu können, muss Ihre App jetzt über die Berechtigungen ACCESS_FINE_LOCATION oder ACCESS_COARSE_LOCATION verfügen

Frage : Bedeutet dies, dass die Aussage des Softwareherstellers falsch ist?

Das Berechtigungssystem ist mit der MM-Umstrukturierung definitiv völlig durchgeknallt (Erklärungen besagen, dass sie "Bluetooth-Beacons" im Sinn hatten, die verwendet werden könnten, um Sie zu lokalisieren). Nach meinem Verständnis sind Ihre Zweifel berechtigt und die Aussage des Anbieters falsch: Apps benötigen die Erlaubnis , um auf Bluetooth zuzugreifen. Aber wenn sie einen Ortungsdienst brauchen, um die Hardware zu finden ("bei der zweiten Lötstelle rechts abbiegen, am Transistor an Gate 3 vorbei..."), wäre ich überrascht. Ich bezweifle sehr, dass dafür Ortungsdienste aktiviert werden müssen, aber ich habe kein MM-Gerät zum Überprüfen.
Ich kann keine "Antwort" hinzufügen, also hier als "Kommentar": Ich verwende Android 11 auf einem Galaxy und habe eine Huawei-Uhr, aber es ist wahrscheinlich im Allgemeinen der Fall: Es scheint, dass Location zum Koppeln erforderlich ist >> oder ohne Kopplung verbinden<<, und die App (Huawei Health) tut letzteres, sie koppelt nie (auf Bluetooth-Ebene), daher ist jedes Mal ein Standort erforderlich. Um das zu beheben: Widerrufen Sie die Standortberechtigung von der App und schalten Sie Bluetooth aus und ein, um die Verbindung zu trennen. Installieren Sie „NRF Connect“ aus dem Play Store, starten Sie es, aktivieren Sie die Standortbestimmung, suchen Sie Ihr Gerät in der Liste, tippen Sie auf drei Punkte und dann auf „Verbinden“. Jetzt verbindet es sich ohne Standort.
[Fortsetzung des obigen Kommentars] Die App (Huawei Health) beschwert sich immer wieder darüber, dass der Standort erforderlich ist, verbindet sich aber trotzdem und funktioniert, wenn der Standort deaktiviert ist. Der Nebeneffekt ist, dass das Bluetooth-Symbol in der Statusleiste bleibt und die Uhr in der Liste der Bluetooth-Geräte in den Android-Einstellungen erscheint, was nicht passiert, wenn man sich über die App ohne Pairing verbindet. Normalerweise sehe ich dieses Symbol nur, wenn ich BT-Kopfhörer anschließe, also bin ich ein wenig verärgert, dass es das nicht mehr anzeigt.

Antworten (6)

Mein Verständnis von Bluetooth ist, dass Anwendungen, die Bluetooth verwenden, zum Zwecke der Kopplung direkten Zugriff auf die MAC-Adresse des Geräts haben. Ich werde dies für diese Antwort annehmen.

Wenn Sie MAC-Adressen von WLAN- oder Bluetooth-Sendern lesen können, können Sie ein Gerät orten. So funktioniert die WLAN-/Bluetooth-Ortung; Sie hören auf MAC-Adressen von Sendern und schlagen diese in einer riesigen globalen Datenbank nach.

Daher ist jede Anwendung, die Bluetooth und eine Datenverbindung verwendet, theoretisch in der Lage, Ihr Gerät zu lokalisieren. Ich bin mir nicht sicher, ob dies praktisch möglich ist; Bluetooth hat nicht die gleiche Reichweite und semipermanente Zugangspunktinfrastruktur wie WiFi.

Indem Sie verlangen, dass Standortdienste auf Bluetooth zugreifen, stellen Sie sicher, dass der Benutzer versteht, dass seine Standortinformationen bei der Verwendung von Bluetooth preisgegeben werden können. In Android-Versionen vor Marshmallow konnte der Benutzer Bluetooth ohne aktivierte Standortdienste verwenden, aber Standortinformationen konnten durchsickern. In diesen älteren Versionen konnten Sie auch WLAN-Scans ausführen, um MAC-Adressen ohne aktivierte Standortdienste zu finden, was wiederum bedeutete, dass Ihre Standortinformationen durchsickern könnten. Die Anforderung, Ortungsdiensten die Verwendung von Bluetooth zu erlauben, besteht darin, sicherzustellen, dass jemand, der die Ortung deaktiviert, seinen Standort geheim hält.

Ich würde dieses Problem als Designproblem und nicht als Fehler charakterisieren. Ein Fehler ist vermutlich behebbar, aber mir ist nicht klar, dass Sie Bluetooth überhaupt verwenden können, ohne möglicherweise Standortinformationen preiszugeben. Bluetooth wurde entwickelt, bevor irgendjemand WiFi- und Bluetooth-Ortungsdienste in Betracht zog.

Wie umgeht Apple diese Anforderung?
Wenn dies MAC-bezogen ist, warum kann ich WLAN ein- und Bluetooth ausschalten?
Dies klingt eher nach einem fatalen Fehler bei der Zusammenführung eines Dienstes, der direkten Zugriff auf diese Informationen bietet, mit der fiktiven Möglichkeit, dass Informationen, die von diesem Dienst bereitgestellt werden, verfügbar werden könnten. Das Deaktivieren von Ortungsdiensten deaktiviert, nehme ich an, keine Textfelder mit der Aufschrift "Wo bist du?" Das Deaktivieren von Bluetooth erfüllt also nur eine halbgare Version der Designabsicht. Es verwendet eine Ein-/Aus-Benutzeranforderung, um lediglich die Angriffsfläche für gegnerische Apps zu verkleinern, die versuchen, ohne Erlaubnis auf den Standort zu schließen, ohne alles zu eliminieren.
Es gibt immer noch einen Unterschied zwischen der „Ortungserlaubnis“ (der Benutzer akzeptiert, dass die App über die MAC-Adresse des Bluetooth-Geräts auf den Standort zugreifen kann) und den „Ortungsdiensten“ (der Benutzer akzeptiert, dass jede Technologie – GPS, WiFi, Bluetooth, LTE... - kann verwendet werden, um den Standort des Android-Geräts von jeder App zu bestimmen). Ersteres bedeutet nur, dass Ihr Standort offengelegt werden kann, weil man wissen könnte, wo sich das Bluetooth-Gerät befindet, letzteres bedeutet wörtlich, dass das Android-Gerät das GPS verwenden kann, um festzustellen, wo sich ein Bluetooth-Gerät befindet.

Der Anbieter hat Recht, Sie müssen Ortungsdienste aktivieren, um nach WiFi- oder Bluetooth LE-Geräten zu suchen.

Siehe Fehler Nr. 185370 für Details. Google sagte, dass sie es in einer „zukünftigen Version“ behoben haben, aber laut Kommentaren zu dem Fehler ist es in Android 7 immer noch nicht behoben.


Bearbeiten: Ich habe zuvor gesagt, dass Ortungsdienste nur erforderlich sind, wenn die App, die den Scan startet, im Hintergrund ausgeführt wird. Der Quellcode gibt an, dass dies nur wahr ist, wenn das API-Ziel < Android M ist.

Wenn es sich um einen Android-Fehler handelt, warum sollte der Anbieter Recht haben? Sie hätten antworten sollen: „Es ist ein Android-Bug“
Ist es möglich, das Gerät außerhalb der App mit Bluetooth zu verbinden?
Sie haben gefragt, ob die Aussage des Verkäufers falsch ist. Es ist nicht falsch, Sie müssen der App Standortberechtigungen erteilen . Außerdem müssen Sie aufgrund des Fehlers Ortungsdienste aktivieren .
Genau so schreibt @jomo. Und Google ist hier definitiv schuld ... Zum Glück scheinen sich die Dinge nach 5 Jahren zum Positiven zu entwickeln.

Das OP fragte nach Pairing (die ursprüngliche, datenschutzsichere Bluetooth-Methode zum Definieren einer neuen, vertrauenswürdigen Beziehung durch Bestätigen eines vom anderen Gerät gesendeten Codes). Für die Kopplung benötigt eine App NICHT:

  1. Scannen Sie nach einer MAC-Adresse
  2. "Standortdienste"
  3. ACCESS_FINE_LOCATION oder ACCESS_COARSE_LOCATION (nicht 100 % sicher)

Ich glaube, dass der Fehler Nr. 185370 nichts damit zu tun hat. Es gibt keinen Fehler; Es gibt unseriöse Anbieter.

Eine MAC-Adresse hat eine Hersteller-ID und eine Geräte-ID und normalerweise eine Modellnummer. Android 6.0 hat eine Funktion kastriert, die es der App eines Herstellers zuvor ermöglichte, nach MAC-Adressen zu suchen, um sie mit ihren eigenen Produkten zu verknüpfen, um Ihnen die Mühe des Koppelns und anderer lustiger Dinge zu ersparen.

Viele Apps haben es jedoch missbraucht, um alle WLAN- und Bluetooth-Produkte in Ihrem Zuhause zu finden, welches Auto Sie fahren, Ihre Datenanbieter usw. und herauszufinden, wo Sie arbeiten, was Ihre Freunde haben oder wer sie sind, wie oft Sie sie besuchen. welche Geschäfte Sie besuchen, etc. (denken Sie an Marketing, Einmischung in Wahlen und „kostenlose“ Spiele aus anderen Ländern).

Von Google: „Um Benutzern einen besseren Datenschutz zu bieten, entfernt Android ab dieser Version den programmgesteuerten Zugriff auf die lokale Hardwarekennung des Geräts für Apps, die die Wi-Fi- und Bluetooth-APIs verwenden. WifiInfo.getMacAddress() und theBluetoothAdapter.getAddress() Methoden geben jetzt einen konstanten Wert von 02:00:00:00:00:00 zurück."

Auch hier werden für das „Pairing“ keine Ortungsdienste benötigt. Dies ist von meinem neuen Bluetooth "BlueDriver" ODBII-Fahrzeugcode-Scanner (dh Motorkontrollleuchte):

Location Services
BlueDriver can use the Bluetooth Location service to scan for
nearby BlueDriver sensors. Instead, if you wish, you can pair
a sensor in the Bluetooth settings of your phone.

(Auf den ersten Blick auf ihre Datenschutzerklärung bin ich ausgeflippt: Sie werden die VIN (einschließlich MFR, Modell, ID usw.) jedes Autos, das ich serviere, auf ihre Server hochladen, plus alle Daten des Autos mit Fahrgewohnheiten usw.; Ich kann nicht ablehnen, dass ADS in meine E-Mail strömt. Dann habe ich es bis zum Ende gelesen. Ich habe festgestellt, dass sie sehr strenge Richtlinien haben, um es privat zu halten und NICHT zu teilen. Sehr ungewöhnlich!)

Ortungsdienste können legitim sein. Die Fitbit-App benötigt es nicht, um sich mit meinem Fitbit zu verbinden, aber es kann ihnen helfen, alle Daten zu sammeln, die sie von mir wollen. Und glauben Sie mir, es ist viel mehr, als sie brauchen, um meine Herzfrequenz zu überprüfen und meine Schritte zu zählen, und das Mapping ist optional.

Dazu muss ich meinen Senf hinzufügen – ich bin ein App-Entwickler, der nach Bluetooth LE-Gesundheitsgeräten suchen muss. Ich muss dies auch im Hintergrund tun, damit sich die App wieder mit dem Gerät verbinden kann, ohne dass der Benutzer mit der App interagieren muss.

Die Tatsache, dass Android FINE Standort- und Hintergrundberechtigungen benötigt, um dies in der neuesten Version zu tun, hat sich als großes Problem erwiesen. Die Idioten lehnen meine App deshalb ab, aber die App benötigt keine Standortinformationen oder kümmert sich nicht um den Standort. Die App filtert die Scans auch, um sicherzustellen, dass nur Gesundheitsgeräte angezeigt werden, die sie unterstützen kann (es gibt viele proprietäre Geräte).

Ich kann SPP und HDP im Hintergrund erkennen (vor Android 10 wurde HDP in Version 10 getötet) ohne diese Berechtigungen. Die Arbeit mit Bluetooth ist für viele Menschen schwer genug, insbesondere für ältere Menschen, die nicht besonders technisch versiert sind. Android macht es immer unmöglicher, ihre Plattform in Situationen der Fernüberwachung von Patienten zu verwenden.

Also meine Antwort auf die Ausgangsfrage. Der App-Entwickler „lügt“ nicht. Android erzwang dies!

Ja, das ist ein großes Kopfzerbrechen. Das Problem ist jedoch, dass Google die WLAN-SSID aller Personen sammelt, die nun zur Bestimmung des genauen Standorts verwendet werden können. Schlechtes Google. Schlecht.
Ich scanne nicht nach WLAN; Ich suche nach Bluetooth Low Energy-Gesundheitsgeräten. Für diese Aufgabe benötige ich keine Standortinformationen. Das Scannen nach BTLE-Geräten umfasst das Abhören von Werbung für verbindbare Geräte. In diesen Anzeigen können Dienst-UUIDs enthalten sein, die angeben, was das Gerät unterstützt. Wenn die UUID einen Gesundheitsgerätedienst unterstützt, mit dem meine App arbeiten kann, gebe ich diese Informationen an den Benutzer weiter und frage ihn, ob er eine Verbindung herstellen möchte. Wenn ja, verbinde ich mich. Kein Standort beteiligt. Aber Google benötigt für diesen Scan eine Standortberechtigung. Wieso den???
Zuerst meine Entschuldigung. Ich habe keine Ahnung, wie ich dazu kam, über WiFi zu schreiben, wenn Sie eindeutig "Bluetooth LE" geschrieben haben. Das tut mir leid. Ja, ich stimme zu, dass es unangebracht ist, dass Google diese Erlaubnis verlangt. Das einzige, was mir einfällt (und Google keineswegs verteidigt), ist, dass Bluetooth LE nicht dieselben APIs wie Bluetooth verwendet? Wenn ja, technisch gesehen, kann Bluetooth (nicht so sehr Bluetooth LE) irgendwie verwendet werden, um unter sehr bestimmten Umständen einen guten Standort bereitzustellen . In all diesen Fällen müsste jemand den genauen Standort des Bluetooth-Geräts kennen. Fortsetzung...
Was ich für ein größeres Problem bei Bluetooth halte, ist, dass ich denke, dass es möglich ist , eine Person mehr oder weniger eindeutig zu identifizieren, die die Bluetooth-APIs von Android verwendet. Und AFAIK, Google hat keine Berechtigung zu spezifizieren, "diese App kann Sie identifizieren". Um die Welt für Entwickler und Verbraucher zu verbessern, könnte (und sollte, meiner Meinung nach) Google eine zusätzliche eingeschränkte API für Bluetooth bereitstellen, die niemals Daten liefert, die zu Identifizierungszwecken verwendet werden könnten. Das würde wahrscheinlich für die meisten Apps ausreichen, ohne Auswirkungen auf die Privatsphäre der Benutzer (und problematische Probleme, wie Sie sie für Entwickler haben).
Den Inhalt einer Bluetooth-Kommunikation allgemein einzuschränken, würde ihren Zweck zunichte machen. Es ist inhaltlich agnostisch. Ich kann verstehen, dass eine App darauf hinweist, ob dies der Fall ist. Meine App macht keine Standortinformationen verfügbar oder verwendet sie. Es funktioniert nur mit Kollegen, die es versteht. Diese Peers folgen Standards. Wenn sie es nicht tun, wird es nicht funktionieren! Warum eine Standorterlaubnis benötigen? Ich benutze auch SPP Bluetooth für den gleichen Zweck. Keine Standorterlaubnis dafür!
Ich stimme definitiv zu, dass alles, was nicht zur Bestimmung des Standorts verwendet werden kann, keine Genehmigungsanfragen für den Standort stellen sollte. Ich denke, es ist entweder ein Fehler (oder Faulheit) von Google, oder jemand hat herausgefunden, wie man diese API verwendet, um den Standort zu bestimmen. Posten Sie es vielleicht als Fehler auf der Android-Entwicklungsseite und sehen Sie, welche Art von Antwort Sie erhalten. Bitte berichte, was du gelernt hast!
Ich nehme an, man könnte den Scanner (oder jedes andere Mittel zur Erkennung von Bluetooth-Geräten, einschließlich klassischer) verwenden, um den Standort zu ermitteln, wenn Sie Geräte da draußen hätten, die im Geheimen dafür arbeiteten. Angesichts der geringen Reichweite von Bluetooth scheint dies schmerzhaft zu sein. Ich habe jedoch ausdrücklich darauf hingewiesen, dass die App den BluetoothLeScanner nur zum Scannen nach persönlichen Gesundheitsgeräten verwendet (das ist ihr Zweck) und ich keine Standortinformationen verwende oder offenlege. Google lehnt die App weiterhin ab. Ich bin verloren und frustriert.
Ich kann definitiv sagen, dass Sie frustriert sind. Es tut mir leid, dass du das durchmachst. Ich fühle mit dir. Obwohl Ihre App keine Standortinformationen verwendet oder offenlegt, sind Google und das Android-Betriebssystem nicht intelligent genug, um dies zu wissen. Die Frage ist: Könnte eine App dies möglicherweise mithilfe der APIs tun, die die Warnung auslösen?

Um eine Bluetooth-Verbindung herzustellen, kann die Standortabhängigkeit wie folgt zusammenhängen:

Wenn eine App nach bekannten Bluetooth-Beacons scannen kann, kann sie auch den Standort anhand des verfügbaren Beacons ermitteln. Wenn also eine App Zugriff auf Bluetooth in Ihrem Telefon erhält, ist es wahrscheinlich, dass sie auch Ihren Standort abrufen kann. Daher ist es sinnvoll, dass eine App nach Standortzugriff fragt, wenn sie versucht, nach Bluetooth-Geräten zu suchen.

Daher wird die Standortabhängigkeit für Bluetooth ab Android 6 (Marshmallow) hinzugefügt. Darüber hinaus haben sie in der neuesten Android-Version (ab 10) die Verwendung des Standorts weiter eingeschränkt, je nachdem, ob Sie die App verwenden (Vordergrundzugriff) oder Ihre App im Hintergrund ausgeführt wird.

Noch ein Hinweis: Diese Abhängigkeit vom Standort und der damit verbundenen Berechtigung ist nicht spezifisch für Android, sondern wurde auch in iOS hinzugefügt.

Es gibt viele schändliche Verwendungen, die man sich ausdenken kann. Angesichts der kurzen Reichweite von Bluetooth wären verdammt viele Beacons erforderlich, um Ihre Position zu verfolgen. Abgesehen davon könnte man den gleichen Mist mit Standard-Bluetooth machen, wenn man einen richtig entworfenen Peer hätte. Aber dafür gibt es keine Standortberechtigungen.
Mit BLE. Standort kann durch gute und schlechte Akteure gefolgert werden. Auch der Standort kann von einer IP-Adresse (ohne VPNs) abgeleitet werden. Ich bin in der Welt der Sicherheit verwirrt. Verschlüsselung soll unser Retter sein, aber Standort, Cookies und Browserverlauf leisten ziemlich gute Arbeit bei der Verfolgung unseres Verhaltens. Warum gibt Google vor, sicher zu sein, während es gleichzeitig Cookies verwendet und unseren Suchverlauf speichert? Klingt für mich so, als wollten sie die Hüter dieser Informationen zu ihrem eigenen Vorteil sein, während sie andere daran hindern, Informationen unter dem Deckmantel der "Sicherheit" zu sammeln ... wessen Sicherheit?

Die Erlaubnis zur Ortung und die eingeschalteten Ortungsdienste sollten zwei verschiedene Dinge sein. Wenn ich damit einverstanden bin, kann diese App Standortdaten mit geringer Genauigkeit, WLAN usw. verwenden. VS. Diese App verwendet oder erfordert, dass das Telefon-GPS aktiviert ist.

Beispiel: Ich lasse GPS auf meinem Telefon ausgeschaltet, aber ich kann mein Fitbit nicht synchronisieren, weil sie sagen, dass ich der App nicht nur die Standortberechtigung erteilen muss, sondern auch das GPS des Telefons eingeschaltet sein muss.