Sempre que tento conectar meu Samsung Galaxy S6 com Android 6.0.1 a um dispositivo habilitado para Bluetooth, ele solicita a ativação de "serviços de localização".
Quando reclamei, o fornecedor do software respondeu: "As atualizações recentes da API do Google Android que afetam a tecnologia Bluetooth LE exigem que sejam concedidas permissões de localização para o uso do aplicativo".
Não vejo a necessidade disso.
Esta discussão fala sobre isso. A referência técnica diz que os aplicativos precisam ter certas permissões , não que os serviços de localização estejam ativos.
Para acessar os identificadores de hardware de dispositivos externos próximos por meio de varreduras Bluetooth e Wi-Fi, seu aplicativo agora deve ter as permissões ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION
Pergunta : Isso significa que a declaração do fornecedor do software está incorreta?
fonte
Respostas:
Meu entendimento do Bluetooth é que os aplicativos que usam Bluetooth têm acesso direto ao endereço MAC do dispositivo para fins de emparelhamento. Vou assumir isso para esta resposta.
Se você conseguir ler os endereços MAC dos transmissores WiFi ou Bluetooth, poderá localizar um dispositivo. É assim que a localização WiFi / Bluetooth funciona; você ouve os endereços MAC dos transmissores e os procura em um gigantesco banco de dados global.
Portanto, qualquer aplicativo usando Bluetooth e uma conexão de dados é teoricamente capaz de localizar seu dispositivo. Não tenho certeza se isso é praticamente possível; O Bluetooth não possui o mesmo alcance e infraestrutura de ponto de acesso semi-permanente que o WiFi.
Ao exigir que os serviços de localização acessem o Bluetooth, você garante que o usuário entenda que suas informações de localização podem vazar ao usar o Bluetooth. Nas versões do Android anteriores ao Marshmallow, o usuário podia usar o Bluetooth sem os serviços de localização ativados, mas as informações de localização poderiam vazar. Nessas versões mais antigas, também era possível executar varreduras de WiFi para encontrar endereços MAC sem os serviços de localização ativados, o que novamente significava que suas informações de localização poderiam vazar. O requisito para permitir que os serviços de localização usem o Bluetooth é garantir que alguém que desabilite a localização mantenha sua localização privada.
Eu caracterizaria esse problema como um problema de design e não como um bug. Presumivelmente, um bug pode ser corrigido, mas não está claro para mim que você pode usar o Bluetooth sem vazar informações de localização. O Bluetooth foi criado antes que alguém considerasse os serviços de localização WiFi e Bluetooth.
fonte
O fornecedor está correto, você precisa habilitar os serviços de localização para procurar dispositivos WiFi ou Bluetooth LE.
Veja o bug # 185370 para obter detalhes. O Google disse que o corrigiu em um 'release futuro', mas de acordo com os comentários sobre o bug, ele ainda não foi corrigido no Android 7.
Editar: Eu disse anteriormente que os serviços de localização são necessários apenas quando o aplicativo que inicia a verificação está sendo executado em segundo plano. O código-fonte indica que isso só é verdade se o alvo da API for <Android M.
fonte