Po uaktualnieniu do systemu Android w wersji 6.0 skanowanie Bluetooth Low Energy (BLE) będzie działać tylko wtedy, gdy usługi lokalizacyjne są włączone na urządzeniu. Zobacz tutaj dla odniesienia: Funkcja startScan Bluetooth Low Energy w systemie Android 6.0 nie znajduje urządzeń
Zasadniczo musisz mieć włączone uprawnienia zarówno dla aplikacji, jak i dla telefonu. Czy to błąd? Czy można skanować bez włączonych usług lokalizacyjnych? Nie chcę mieć lokalizacji dla wszystkich moich aplikacji.
EDYCJA
Nie wspomniałem, że używam startScan()
metody BluetoothLeScanner
podanej w API 21. Jestem w porządku z kursem i dobrymi uprawnieniami do lokalizacji w manifeście, których ta metoda wymaga. Po prostu nie chcę, aby użytkownicy mojej aplikacji musieli włączać usługi lokalizacyjne na swoim urządzeniu (GPS itp.), Aby korzystać z mojej aplikacji.
Wcześniej startScan()
metoda działała i zwracała wyniki z wyłączonymi usługami lokalizacji w telefonie. Jednak na Marshmallow ta sama aplikacja „skanowała”, ale po cichu zawodziła i nie zwracała żadnych wyników, gdy usługi lokalizacyjne nie były włączone na telefonie, a uprawnienia do lokalizacji kursu / dokładnej nadal były w manifeście.