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
normaleenhandtekeningmachtigingen onder. - Runtime-machtigingen: Machtigingen die worden aangevraagd tijdens het gebruik op apparaten met Android 6.0 (API-niveau 23) en hoger. Hier vallen
gevaarlijkemachtigingen 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 totnormalenoch totgevaarlijke.
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
}