Chaque fois que j'essaie de connecter mon Samsung Galaxy S6 avec Android 6.0.1 à un appareil compatible Bluetooth, il me dit d'activer les "services de localisation".
Lorsque je me suis plaint de cela, le fournisseur de logiciels a répondu: "Les mises à jour récentes de l'API Google Android affectant la technologie Bluetooth LE nécessitent l'octroi d'autorisations de localisation pour utiliser l'application."
Je ne vois pas la nécessité de cela.
Cette discussion en parle. La référence technique indique que les applications doivent avoir certaines autorisations , pas que les services de localisation soient actifs.
Pour accéder aux identifiants matériels des appareils externes à proximité via des analyses Bluetooth et Wi-Fi, votre application doit maintenant disposer des autorisations ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION
Question : cela signifie-t-il que la déclaration du fournisseur du logiciel est incorrecte?
la source
Réponses:
Ma compréhension de Bluetooth est que les applications utilisant Bluetooth ont un accès direct à l'adresse MAC de l'appareil à des fins de couplage. Je vais assumer cela pour cette réponse.
Si vous pouvez lire les adresses MAC des émetteurs WiFi ou Bluetooth, vous pouvez localiser un appareil. Voici comment fonctionne l'emplacement WiFi / Bluetooth; vous écoutez les adresses MAC des émetteurs et les recherchez dans une base de données mondiale géante.
Par conséquent, toute application utilisant Bluetooth et une connexion de données est théoriquement capable de localiser votre appareil. Je ne suis pas sûr que ce soit pratiquement possible; Le Bluetooth n'a pas la même portée et l'infrastructure de point d'accès semi-permanent que le WiFi.
En exigeant que les services de localisation accèdent à Bluetooth, vous vous assurez que l'utilisateur comprend que ses informations de localisation peuvent fuir lorsqu'il utilise Bluetooth. Dans les versions d'Android antérieures à Marshmallow, l'utilisateur pouvait utiliser Bluetooth sans activer les services de localisation, mais les informations de localisation pouvaient fuir. Dans ces anciennes versions, vous pouviez également exécuter des analyses WiFi pour trouver des adresses MAC sans activer les services de localisation, ce qui signifiait à nouveau que vos informations de localisation pouvaient fuir. L'obligation d'autoriser les services de localisation à utiliser Bluetooth consiste à s'assurer que quelqu'un qui désactive la localisation conserve sa position privée.
Je qualifierais ce problème de problème de conception et non de bogue. Un bug est vraisemblablement réparable, mais il n'est pas clair pour moi que vous pouvez utiliser Bluetooth du tout sans potentiellement divulguer des informations de localisation. Bluetooth a été créé avant que quiconque ne considère les services de localisation WiFi et Bluetooth.
la source
Le fournisseur est correct, vous devez activer les services de localisation pour rechercher des appareils WiFi ou Bluetooth LE.
Voir bug # 185370 pour plus de détails. Google a déclaré qu'ils l'avaient corrigé dans une `` future version '' mais selon les commentaires sur le bug, il n'est toujours pas corrigé dans Android 7.
Modifier: j'ai déjà dit que les services de localisation ne sont requis que lorsque l'application qui démarre l'analyse s'exécute en arrière-plan. Le code source indique que cela n'est vrai que si l'API-Target est <Android M.
la source