Come menzionato nel flusso di lavoro per l'utilizzo delle autorizzazioni, se la tua app richiede autorizzazioni dell'app, devi dichiararle nel file manifest dell'app. Queste dichiarazioni aiutano gli store e gli utenti a comprendere l'insieme di autorizzazioni che la tua app potrebbe richiedere.
La procedura per richiedere un'autorizzazione dipende dal tipo di autorizzazione:
- Se l'autorizzazione è un'autorizzazione al momento dell'installazione, ad esempio un'autorizzazione normale o una firma, l'autorizzazione viene concessa automaticamente al momento dell'installazione.
- Se l'autorizzazione è un'autorizzazione di runtime o un'autorizzazione speciale e la tua app è installata su un dispositivo con Android 6.0 (livello API 23) o versioni successive, devi richiedere personalmente l'autorizzazione di runtime o l'autorizzazione speciale.
Aggiungi dichiarazione al file manifest dell'app
Per dichiarare un'autorizzazione che la tua app potrebbe richiedere, includi l'elemento <uses-permission>
appropriato nel file manifest dell'app. Ad esempio, un'app che deve accedere alla fotocamera ha questa riga in AndroidManifest.xml
:
<manifest ...> <uses-permission android:name="android.permission.CAMERA"/> <application ...> ... </application> </manifest>
Dichiara l'hardware come facoltativo
Alcune autorizzazioni, ad esempio CAMERA
, consentono alla tua app di accedere a componenti hardware presenti solo su alcuni dispositivi Android. Se la tua app dichiara una di queste autorizzazioni associate all'hardware, valuta se può comunque essere eseguita su un dispositivo privo di hardware. Nella maggior parte dei casi, l'hardware è facoltativo, pertanto è meglio dichiararlo come facoltativo impostando android:required
su false
nella dichiarazione di <uses-feature>
, come mostrato nel seguente snippet di codice proveniente da un file AndroidManifest.xml
:
<manifest ...> <application> ... </application> <uses-feature android:name="android.hardware.camera" android:required="false" /> <manifest>
Determinare la disponibilità dell'hardware
Se dichiari l'hardware facoltativo, la tua app può essere eseguita su un dispositivo che non lo ha. Per verificare se in un dispositivo è presente un componente hardware specifico, utilizza il metodo hasSystemFeature()
, come mostrato nello snippet di codice riportato di seguito. Se l'hardware non è disponibile,
disattiva la funzionalità nell'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. }
Dichiarare le autorizzazioni in base al livello API
Per dichiarare un'autorizzazione solo sui dispositivi che supportano le autorizzazioni di runtime, ovvero i dispositivi che eseguono Android 6.0 (livello API 23) o versioni successive, includi l'elemento <uses-permission-sdk-23>
anziché l'elemento <uses-permission>
.
Quando utilizzi uno di questi elementi, puoi impostare l'attributo maxSdkVersion
per indicare che i dispositivi con una versione di Android successiva al valore specificato non necessitano di una particolare autorizzazione. In questo modo puoi eliminare le autorizzazioni non necessarie, garantendo al contempo la compatibilità con i dispositivi meno recenti.
Ad esempio, la tua app potrebbe mostrare contenuti multimediali, come foto o video, creati dall'utente mentre la utilizzi. In questo caso, non è necessario utilizzare l'autorizzazione READ_EXTERNAL_STORAGE
sui dispositivi con Android 10 (livello API 29) o versioni successive, purché l'app abbia come target Android 10 o versioni successive. Tuttavia, per garantire la compatibilità con dispositivi meno recenti,
puoi dichiarare l'autorizzazione READ_EXTERNAL_STORAGE
e impostare android:maxSdkVersion
su 28.