Come indicato nel flusso di lavoro per l'utilizzo autorizzazioni, se la tua app richiede l'app autorizzazioni, devi dichiararle nel file manifest dell'app. Queste dichiarazioni aiutano gli store e gli utenti a comprendere l'insieme di autorizzazioni richiesti dalla tua app.
La procedura per richiedere un'autorizzazione dipende dal tipo di autorizzazione:
- Se l'autorizzazione è al momento dell'installazione autorizzazione, come una normale o un'autorizzazione di firma, l'autorizzazione viene concessa automaticamente l'ora di installazione.
- Se l'autorizzazione è un runtime autorizzazione o speciale autorizzazione e se la tua app è installato su un dispositivo con Android 6.0 (livello API 23) o versioni successive, devi: richiedi l'autorizzazione di runtime o un programma speciale l'autorizzazione te stesso.
Aggiungi dichiarazione al file manifest dell'app
Per dichiarare un'autorizzazione che la tua app potrebbe richiedere, includi i dati appropriati
Elemento <uses-permission>
in
il 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
, consenti alla tua app
accedere a elementi hardware di cui dispongono solo alcuni dispositivi Android. Se la tua app
dichiara uno dei seguenti contenuti associati all'hardware
autorizzazioni,
valuta se la tua app può ancora essere eseguita su un dispositivo sprovvisto di questo
hardware. Nella maggior parte dei casi, l'hardware è facoltativo, quindi è meglio dichiarare
hardware come facoltativo impostando android:required
su false
nel
<uses-feature>
, come
mostrato nel seguente snippet di codice 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 come facoltativo, l'app può essere eseguita su un
su un dispositivo privo di questo hardware. Per verificare se un dispositivo ha una specifica
utilizzare l'hardware
hasSystemFeature()
come mostrato nello snippet di codice riportato di seguito. Se l'hardware non è disponibile,
disattivare delicatamente la funzionalità nella tua 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. }
Dichiara le autorizzazioni per livello API
Per dichiarare un'autorizzazione solo sui dispositivi che supportano le autorizzazioni di runtime,
i dispositivi con Android 6.0 (livello API 23) o versioni successive, tra cui
<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 a
il valore specificato non richiede
un'autorizzazione particolare. Questo consente di
elimina le autorizzazioni non necessarie e garantisce la compatibilità
per i dispositivi meno recenti.
Ad esempio, la tua app potrebbe mostrare contenuti multimediali, come foto
o video creati dall'utente mentre utilizzava la tua app. In questa situazione,
non c'è bisogno di usare
READ_EXTERNAL_STORAGE
sui dispositivi
Eseguire Android 10 (livello API 29) o versioni successive, purché la tua app abbia come target
Android 10 o versioni successive. Tuttavia, per la compatibilità con dispositivi meno recenti,
puoi dichiarare l'autorizzazione READ_EXTERNAL_STORAGE
e impostare
Da android:maxSdkVersion
a 28.