Junior
Quali tipi di permessi (permissions) esistono in Android?
sobes.tech AI
Risposta dell'AI
Su Android, esistono diversi tipi di autorizzazioni che determinano i livelli di accesso dell'applicazione alle risorse protette e ai dati dell'utente.
- Permessi normali: Permessi con rischio minimo. Vengono concessi automaticamente all'installazione dell'app e non richiedono il consenso esplicito dell'utente durante l'esecuzione. Ad esempio, accesso a internet (
android.permission.INTERNET). - Permessi pericolosi: Permessi ad alto rischio. Richiedono il consenso esplicito dell'utente durante l'esecuzione dell'app. L'accesso a queste risorse può influire sulla privacy o sul funzionamento del dispositivo. Ad esempio, accesso ai contatti (
android.permission.READ_CONTACTS), alla fotocamera (android.permission.CAMERA). - Permessi di firma: Permessi che possono essere concessi alle applicazioni firmate con lo stesso certificato dell'app che definisce il permesso. Utilizzati per controllare l'accesso tra componenti di un sistema o di un insieme di applicazioni.
- Permessi di firma o di sistema: Questi permessi possono essere concessi sia alle applicazioni firmate con lo stesso certificato, sia alle applicazioni presenti nella sezione di sistema.
Inoltre, si possono distinguere:
- Permessi al momento dell'installazione: Permessi richiesti e concessi durante l'installazione dell'app. Includono permessi
normaliedi firma. - Permessi in tempo di esecuzione: Permessi richiesti durante l'esecuzione su dispositivi con Android 6.0 (API livello 23) e superiori. Includono permessi
pericolosi. - Permessi speciali: Una classe speciale di permessi che richiedono passaggi specifici per essere concessi. Ad esempio, sovrapposizione su altre finestre (
SYSTEM_ALERT_WINDOW) o modifica delle impostazioni di sistema (WRITE_SETTINGS). Non appartengono né anormalené apericoloso.
Nel manifesto dell'app vengono richiesti tutti i permessi necessari:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CAMERA" />
<application
...
>
...
</application>
</manifest>
La richiesta di permessi pericolosi viene effettuata durante l'esecuzione:
// Esempio di richiesta di permesso per leggere i contatti
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.READ_CONTACTS),
MY_PERMISSIONS_REQUEST_READ_CONTACTS)
} else {
// Il permesso è già stato concesso, si può eseguire l'operazione
}