Ilekroć próbuję podłączyć Samsung Galaxy S6 z Androidem 6.0.1 do urządzenia obsługującego Bluetooth, mówi mi o włączeniu „usług lokalizacyjnych”.
Kiedy narzekałem na to, sprzedawca oprogramowania odpowiedział: „Najnowsze aktualizacje interfejsu API Google Android wpływające na technologię LE LE Bluetooth wymagają przyznania uprawnień do lokalizacji w celu korzystania z aplikacji”.
Nie widzę potrzeby tego.
Ta dyskusja mówi o tym. Dokumentacja techniczna mówi, że aplikacje muszą mieć określone uprawnienia , a nie, aby usługi lokalizacyjne były aktywne.
Aby uzyskać dostęp do identyfikatorów sprzętowych pobliskich urządzeń zewnętrznych za pomocą skanów Bluetooth i Wi-Fi, Twoja aplikacja musi teraz mieć uprawnienia ACCESS_FINE_LOCATION lub ACCESS_COARSE_LOCATION
Pytanie : Czy to oznacza, że oświadczenie dostawcy oprogramowania jest nieprawidłowe?
źródło
Odpowiedzi:
Rozumiem przez Bluetooth, że aplikacje korzystające z Bluetooth mają bezpośredni dostęp do adresu MAC urządzenia w celu parowania. Zakładam to dla tej odpowiedzi.
Jeśli potrafisz odczytać adresy MAC nadajników WiFi lub Bluetooth, możesz zlokalizować urządzenie. Tak działa lokalizacja WiFi / Bluetooth; nasłuchujesz adresów MAC nadajników i przeglądasz je w gigantycznej globalnej bazie danych.
Dlatego każda aplikacja korzystająca z Bluetooth i połączenia danych teoretycznie może zlokalizować twoje urządzenie. Nie jestem pewien, czy jest to praktycznie możliwe; Bluetooth nie ma takiego samego zasięgu i półtrwałej infrastruktury punktu dostępu jak WiFi.
Wymagając od usług lokalizacyjnych dostępu do Bluetooth, upewniasz się, że użytkownik rozumie, że informacje o jego lokalizacji mogą wyciekać podczas korzystania z Bluetooth. W wersjach Androida wcześniejszych niż Marshmallow użytkownik mógł korzystać z Bluetooth bez włączonych usług lokalizacyjnych, ale informacje o lokalizacji mogły wyciekać. W tych starszych wersjach można również uruchomić skanowanie Wi-Fi w celu znalezienia adresów MAC bez włączonych usług lokalizacyjnych, co ponownie oznacza, że informacje o Twojej lokalizacji mogą wyciekać. Wymaganie, aby usługi lokalizacyjne mogły korzystać z Bluetooth, polega na tym, aby osoba wyłączająca lokalizację zachowała prywatność swojej lokalizacji.
Chciałbym scharakteryzować ten problem jako problem projektowy, a nie błąd. Błąd można przypuszczalnie naprawić, ale nie jest dla mnie jasne, że możesz w ogóle korzystać z Bluetooth bez potencjalnie wycieku informacji o lokalizacji. Bluetooth został stworzony, zanim ktokolwiek rozważył usługi lokalizacyjne WiFi i Bluetooth.
źródło
Sprzedawca ma rację, musisz włączyć usługi lokalizacyjne, aby skanować w poszukiwaniu urządzeń WiFi lub Bluetooth LE.
Szczegółowe informacje można znaleźć w błędzie # 185370 . Google powiedział, że naprawili go w „przyszłej wersji”, ale zgodnie z komentarzami do błędu, nadal nie jest naprawiony w Androidzie 7.
Edycja: wcześniej powiedziałem, że usługi lokalizacyjne są wymagane tylko wtedy, gdy aplikacja rozpoczynająca skanowanie działa w tle. Kod źródłowy wskazuje, że jest to prawdą tylko wtedy, gdy celem interfejsu API jest <Android M.
źródło