Sobes.tech
Junior

Welke soorten permissies (permissions) bestaan er in Android?

sobes.tech AI

Antwoord van AI

Op Android zijn er verschillende soorten machtigingen die de toegangsniveaus van een app tot beveiligde bronnen en gegevens van de gebruiker bepalen.

  • Normale machtigingen: Machtigingen met minimaal risico. Ze worden automatisch verleend bij het installeren van de app en vereisen geen expliciete toestemming van de gebruiker tijdens het gebruik. Bijvoorbeeld toegang tot internet (android.permission.INTERNET).
  • Gevaarlijke machtigingen: Machtigingen met een hoog risico. Ze vereisen expliciete toestemming van de gebruiker tijdens het gebruik van de app. Toegang tot deze bronnen kan de privacy of de werking van het apparaat beïnvloeden. Bijvoorbeeld toegang tot contacten (android.permission.READ_CONTACTS), camera (android.permission.CAMERA).
  • Handtekeningmachtigingen: Machtigingen die kunnen worden verleend aan apps die met hetzelfde certificaat zijn ondertekend als de app die de machtiging definieert. Gebruikt om toegang tussen componenten van hetzelfde systeem of set apps te controleren.
  • Handtekening- of systeemmachtigingen: Deze machtigingen kunnen worden verleend aan apps die met hetzelfde certificaat zijn ondertekend of aan apps die zich in de systeelsectie bevinden.

Daarnaast kunnen we onderscheiden:

  • Installatietijdmachtigingen: Machtigingen die worden aangevraagd en verleend tijdens de installatie van de app. Hier vallen normale en handtekening machtigingen onder.
  • Runtime-machtigingen: Machtigingen die worden aangevraagd tijdens het gebruik op apparaten met Android 6.0 (API-niveau 23) en hoger. Hier vallen gevaarlijke machtigingen onder.
  • Speciale machtigingen: Een speciale klasse van machtigingen die speciale stappen vereisen om te worden verleend. Bijvoorbeeld, overlay boven andere vensters (SYSTEM_ALERT_WINDOW) of het wijzigen van systeeminstellingen (WRITE_SETTINGS). Ze behoren noch tot normale noch tot gevaarlijke.

In het manifest van de app worden alle benodigde machtigingen aangevraagd:

<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>

De aanvraag van gevaarlijke machtigingen wordt tijdens het gebruik gedaan:

// Voorbeeld van het aanvragen van toestemming om contacten te lezen
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 {
    // Toestemming is al verleend, operatie kan worden uitgevoerd
}