Sécurité/permission d'accès aux ressources Android

 

L'utilisateur qui télécharge une application ne connait pas forcement toutes les ressources qui peuvent être utilisées par cette application. Or certaines peuvent être payantes (Ex. les SMS), d'autres être un peu trop curieuses (Ex. lecture des contactes, position actuelle via GPS)...

Android se base donc sur ce système de permission afin d'informer l'utilisateur des ressources qui peuvent être utilisées par l'application avant de lancer l'installation de celle-ci. A l'utilisateur ensuite, en connaissance de cause, d'installer ou non l'application.

Ce n'est pas encore l'idéale, car rien n'empêche une application d'abuser de ces privilèges. Mais c'est déjà un début...

Pour que votre application puisse accéder à certaines ressources de votre appareil, il faut lui donner des permsissions.

Ces permissions seront à définir dans une balise uses-permission du fichier AndroidManifest.xml en précisant dans l'attribut android:name le nom de la permission de android.permission.

Les permissions seront positionnées entre les balises <manifest ...> </manifest>

Voici une liste non exaustive de permissions:

Accès aux données personnelles

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.READ_HISTORY_BOOKMARKS" />
<uses-permission android:name="android.permission.WRITE_HISTORY_BOOKMARKS" />

Audio

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

Batterie

<uses-permission android:name="android.permission.BATTERY_STATS" />

Bluetooth

<uses-permission android:name="android.permission.BLUETOOTH" />

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

Camera

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />

Géolocalisation (GPS)

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

Modification de paramètres

<uses-permission android:name="android.permission.SET_ORIENTATION" />
<uses-permission android:name="android.permission.SET_TIME_ZONE" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />

Envoi et réception de SMS/MMS

<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />

Microphone

<uses-permission android:name="android.permission.RECORD_AUDIO" />

Réseau

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

Téléphonie

<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />

Vibreur

<uses-permission android:name="android.permission.VIBRATE" />

Wallpaper

android:permission="android.permission.BIND_WALLPAPER"

Boot

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />