Apps direcionados ao Android 13 (nível 33 da API) ou versões mais recentes que gerenciam conexões Wi-Fi
deve solicitar
NEARBY_WIFI_DEVICES
permissão de execução: Isso
Com a permissão, é mais fácil justificar o acesso de um app a dispositivos Wi-Fi próximos.
em versões anteriores do Android, esses aplicativos precisavam declarar a
ACCESS_FINE_LOCATION
no lugar da permissão.
A permissão faz parte do grupo de dispositivos por perto
A permissão NEARBY_WIFI_DEVICES
faz parte do grupo de permissões de
dispositivos por perto. Esse grupo, adicionado no Android 12 (nível 31 da API), também inclui
permissões relacionadas ao Bluetooth e a banda ultralarga. Quando você solicita qualquer
combinação de permissões desse grupo, o sistema mostra uma única
caixa de diálogo de execução e pede que o usuário aprove o acesso do app aos dispositivos por perto.
Nas configurações do sistema, o usuário precisa ativar e desativar a opção Dispositivos por perto.
permissões como um grupo. por exemplo, os usuários não podem desativar o acesso Wi-Fi, mas manter
Acesso ao Bluetooth ativado para um determinado app.
Declarar explicitamente que o app não determina a localização física
Ao direcionar ao Android 13 ou versões mais recentes, considere se o app
determina informações de localização das APIs de Wi-Fi. Caso contrário, você precisa fazer essa
declaração. Para fazer isso, defina o atributo usesPermissionFlags
como
neverForLocation
no arquivo de manifesto do app, conforme mostrado no snippet de código
abaixo. Esse processo é parecido com o que você faz ao
declarar que as informações do dispositivo Bluetooth nunca são usadas para localização:
<manifest ...> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <application ...> ... </application> </manifest>
Versões anteriores e algumas APIs exigem permissão de localização
Várias APIs de Wi-Fi exigem a permissão ACCESS_FINE_LOCATION
, mesmo quando o
app é destinado ao Android 13 ou mais recente. Os exemplos incluem:
métodos da classe WifiManager
:
Além disso, como a permissão NEARBY_WIFI_DEVICES
está disponível apenas no
Android 13 e versões mais recentes, é necessário manter as declarações para
ACCESS_FINE_LOCATION
para oferecer compatibilidade
com versões anteriores no seu app. No entanto, contanto que seu app
não depende de outra forma
informações do local exato, é possível
defina a versão máxima do SDK dessa permissão como 32
, conforme mostrado no
seguinte snippet de código:
<manifest ...> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" /> <application ...> ... </application> </manifest>
Verificar se há APIs que exigem a permissão
Caso o app seja destinado ao Android 13 ou versões mais recentes, é necessário declarar a
permissão NEARBY_WIFI_DEVICES
para chamar estas APIs de Wi-Fi:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
Fluxos de trabalho do acesso Wi-Fi
A Figura 1 mostra o fluxo de trabalho do acesso Wi-Fi em dispositivos com o
Android 13 ou mais recente, para apps direcionados ao
Android 13 ou mais recente. Desde que você declare que o
app não determina a localização física das informações do dispositivo Wi-Fi, não é mais
necessário declarar a permissão ACCESS_FINE_LOCATION
:
A Figura 2 mostra o fluxo de trabalho do acesso Wi-Fi em dispositivos com a
versão 12 L ou anteriores. Observe a dependência na permissão
ACCESS_FINE_LOCATION
.