Whenever I try to connect my Samsung Galaxy S6 with Android 6.0.1 to a Bluetooth enabled device, it tells me to enable "location services".

When I complained about this, the software vendor replied: "Recent updates to the Google Android API affecting Bluetooth LE technology requires location permissions to be granted in order to use the app."

I fail to see the need for this.

This discussion talks about this. The technical reference says the apps need to have certain permissions, not that location services be active.

To access the hardware identifiers of nearby external devices via Bluetooth and Wi-Fi scans, your app must now have the ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION permissions

Question: Does this mean the software vendor's statement is incorrect?

  • The permission system is definitely completely borked with the MM restructuring (explanations say they had "Bluetooth beacons" in mind which could be used to locate you). To my understanding, your doubt is justified and the vendor's statement incorrect: Apps need the permission in order to access Bluetooth. But if they need a location service to find the hardware ("turn right on the second solder joint, pass the transistor at gate 3…"), I'd be surprised. I very much doubt location services need to be enabled for that, but I have no MM device to verify. – Izzy Oct 21 '16 at 15:42

My understanding of Bluetooth is that applications using Bluetooth have direct access to the device MAC address for the purpose of pairing. I will assume this for this answer.

If you can read MAC addresses of WiFi or Bluetooth transmitters, you can locate a device. This is how WiFi/Bluetooth location works; you listen for MAC addresses of transmitters and look these up in a giant global database.

Therefore, any application using Bluetooth and a data connection is theoretically capable of locating your device. I am not sure this is practically possible; Bluetooth does not have the same range and semi-permanent access point infrastructure as WiFi.

By requiring location services to access Bluetooth, you ensure that the user understands their location information may leak when they use Bluetooth. In versions of Android prior to Marshmallow, the user could use Bluetooth without location services enabled, but location information could leak. In these older versions, you could also run WiFi scans to find MAC addresses without location services enabled, which again meant that your location information could leak. The requirement to allow location services to use Bluetooth is about ensuring that someone who disables location keeps their location private.

I would characterize this issue as a design problem and not a bug. A bug is presumably fixable, but it's not clear to me you can use Bluetooth at all without potentially leaking location information. Bluetooth was created before anyone considered WiFi and Bluetooth location services.


The vendor is correct, you need to enable location services to scan for WiFi or Bluetooth LE devices.

See bug #185370 for details. Google said they have fixed it in a 'future release' but according to comments on the bug, it's still not fixed in Android 7.

Edit: I previously said location services are only required when the App starting the scan is running in the background. The source code indicates this is only true if the API-Target is < Android M.

  • If it's an Android bug, why would the vendor be right? They should have replied: "It's an Android bug" – GUI Junkie Oct 23 '16 at 12:43
  • Is it possible to link the device to bluetooth outside the App? – GUI Junkie Oct 23 '16 at 12:45
  • You asked if the vendor's statement is incorrect. It is not incorrect, you do need to grant location permissions to the app. Additionally, due to the bug, you need to enable location services. – jomo Oct 23 '16 at 13:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.