Het is een groot irritatiepunt van privacybewuste mensen die controle willen houden over hun apps: de vraag om toegang tot je locatie. Daar wordt door een hoop apps om gevraagd, zelfs als de software daar niks mee doet...
...Na voor de zoveelste keer met een kluitje het riet in te zijn gestuurd over dit vraagstuk besloten we zelf maar uit te zoeken waarom ontwikkelaars zo graag toegang willen tot je locatie. Willen ze weten waar gebruikers zich bevinden? Is het informatie die zij verzamelen om door te verkopen aan adverteerders? Heeft het te maken met telemetrie en ondersteuning? Soms wel, maar meestal is er iets anders aan de hand. Het blijkt namelijk niet altijd opzet te zijn dat er om deze permissie wordt gevraagd.
Het blijkt te maken te hebben met een wijziging in de Google Android API sinds Android 6 (Marshmallow) met betrekking tot de Bluetooth Low Energy specificatie. Als je app op wat voor manier dan ook gebruik maakt van deze specificatie, dan is de locatiemachtiging vereist. Aangezien deze specificatie ook gekoppeld is aan de Wifi-functionaliteit, kan het simpelweg gebruiken van een draadloze verbinding ervoor zorgen dat de app om een locatiemachtiging moet vragen.
In eerste instantie werd dit probleem aangemerkt als bug. Maar later bleek dat Google dit opzettelijk zo heeft opgezet (en noemt het een beveiligingsmaatregel) en dat het niet van plan is dit te veranderen tot grote irritatie van ontwikkelaars, zeker omdat in sommige gevallen het vragen om toestemming tot de locatie-management niet voldoende is, maar de gebruiker ook daadwerkelijk een GPS-fix moet hebben...
...Er is gelukkig een klein lichtpuntje. Het is mogelijk om om dit probleem heen te werken. Op Stack overflow wordt gemeld dat er weldegelijk gezocht kan worden naar Bluetooth (LE) en Wifi-apparaten zonder dat de locatiediensten aan staan. Hiervoor kunnen ontwikkelaars BluetoothAdapter.getDefaultAdapter().startDiscovery() en startScan() gebruiken. "Dit zal alle Bluetooth-, BLE- en andere apparaten, ontdekken. BLE-apparaten zullen echter geen scanrecord hebben (wat ze normaal wel zouden hebben gehad als ze als gevolg van startScan() zouden zijn ontdekt".
Alles bij de bron; WebWereld