Conforme mencionado no fluxo de trabalho para uso de permissões, se seu app solicitar permissões, declare-as no arquivo de manifesto do app. Essas declarações ajudam as app stores e os usuários a entender o conjunto de permissões que seu app pode solicitar.
O processo de execução de uma solicitação de permissão depende do tipo:
- Se for uma permissão no momento da instalação, como uma permissão normal ou de assinatura, ela será concedida automaticamente no momento da instalação.
- Se for uma permissão de execução e se o app estiver instalado em um dispositivo que executa o Android 6.0 (API de nível 23) ou versões mais recentes, será preciso solicitar a permissão por conta própria.
Adicionar declaração ao manifesto do app
Para declarar uma permissão que seu app pode solicitar, inclua o elemento
<uses-permission>
adequado no
arquivo de manifesto do app. Por exemplo, um app que precisa acessar a câmera
teria a seguinte linha no manifesto:
AndroidManifest.xml
<manifest ...> <uses-permission android:name="android.permission.CAMERA"/> <application ...> ... </application> </manifest>
Declarar hardware como opcional
Algumas permissões, como
CAMERA
, permitem que seu app
acesse hardware específico presente em apenas alguns dispositivos Android. Se o app declarar uma dessas permissões associadas a hardware, considere a possibilidade de que seu app não seja executado em um dispositivo que não tenha esse hardware. Na maioria dos casos, o hardware é opcional, então é melhor declarar
o hardware como opcional definindo android:required
como false
na sua
declaração <uses-feature>
, conforme
mostrado neste snippet de código:
AndroidManifest.xml
<manifest ...> <application> ... </application> <uses-feature android:name="android.hardware.camera" android:required="false" /> <manifest>
Determinar a disponibilidade de hardware
Caso você declare o hardware como opcional, é possível que seu app seja executado em um
dispositivo que não tenha esse hardware. Para verificar se um dispositivo tem um hardware específico,
use o método hasSystemFeature()
, conforme mostrado no snippet de código a seguir. Se o hardware não estiver disponível,
desative normalmente esse recurso no app.
Kotlin
// Check whether your app is running on a device that has a front-facing camera. if (applicationContext.packageManager.hasSystemFeature( PackageManager.FEATURE_CAMERA_FRONT)) { // Continue with the part of your app's workflow that requires a // front-facing camera. } else { // Gracefully degrade your app experience. }
Java
// Check whether your app is running on a device that has a front-facing camera. if (getApplicationContext().getPackageManager().hasSystemFeature( PackageManager.FEATURE_CAMERA_FRONT)) { // Continue with the part of your app's workflow that requires a // front-facing camera. } else { // Gracefully degrade your app experience. }
Declarar permissões por nível de API
Para declarar uma permissão apenas em dispositivos compatíveis com permissões de execução, ou seja,
dispositivos com Android 6.0 (API de nível 23) ou versões mais recentes, inclua o
elemento uses-permission-sdk-23
em vez do
elemento uses-permission
.
Ao usar um desses elementos, você poderá definir o atributo maxSdkVersion
.
Esse atributo indica que dispositivos que executam uma versão mais recente do que a
maxSdkVersion
não precisam de uma permissão específica.