Android, A Complete Course, From Basics to Enterprise Edition

Les Permissions.

Android, A Complete Course, From Basics to Enterprise Edition. 1

Composants graphiques complexes Android. 1

Communiquer avec le système. 1

1       Communiquer avec l’extérieur de l’activité. 1

1.1         Les permissions. 1

 Cet article est extraie du livre « Android, A Complete Course », disponible sur Android2ee.com.

Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques. Ce code est libre de toute utilisation mais n'est pas distribuable.

La distribution du code est reservée au site :

http://android2ee.com.

La propriété intellectuelle du code appartient à :

Mathias Séguy

L’utilisation de ces codes est sous votre unique responsabilité et personne d’autre que vous ne pourra être tenu responsable des préjudices ou dommages de quelques natures que ce soit pouvant résulter de son utilisation.

Tous les noms de produits ou marques cités dans cet ouvrage sont des marques déposés par leurs propriétaires respectifs.

Publié par http://android2ee.com

Titre Original : Android, A Complete Course, From Basics to Enterprise Edition. Édition Française.

ISBN : 979-10-90388-00-0

Copyright © 2011 by Mathias Séguy

 

Aucune représentation ou reproduction, même partielle, autre que celles prévues à l’article L. 122-5 2° et 3° a) du code de la propriété intellectuelle ne peut être faite sans l’autorisation expresse de Mathias Seguy ou, le cas échéant, sans le respect des modalités prévues à l’article L. 122-10 dudit code

Communiquer avec le système

1         Communiquer avec l’extérieur de l’activité

 

1.1       Les permissions

L’objectif des permissions est de demander à l’utilisateur s’il accepte que tel service utilise tel autre service. Cela permet d’assurer à l’utilisateur qu’il ne se fait pas piller ses données sans même s’en apercevoir.

Si vous ouvrez des services contenant des données privées de votre utilisateur, vous devez exiger que toute application qui veut utiliser ces données demande à l’utilisateur si elle en a le droit.

1.1.1       Demander une permission pour utiliser un autre service

Pour cela, il suffit de rajouter dans votre fichier manifest.xml, à la racine, les demandes de permissions souhaitées :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.android.app.myapp" >

 

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

 

</manifest>

La liste des permissions natives d’Android se trouve ici :

http://developer.android.com/reference/android/Manifest.permission.html

Et grosso modo, dès que vous utilisez un programme tiers, une permission est à demander (internet, SMS, GPS, bookmarks, WIFI, Bluetooth, état de la batterie…)

Il est important de souligner que l’Android Market parse vos demandes de permissions à la recherche de permission hardware. Dans ce cas, Android Market considérera que si vous demandez une application Hardware (camera, gps, accelerometer,…) votre application a besoin d’un appareil avec cet hardware pour fonctionner. Votre application sera alors filtrée avec ce critère.

De plus Android préconise que vous utilisiez la balise <uses-feature> pour déclarer ce genre de dépendance. De plus vous pouvez rajouter l’attribut android:required = false si cet hardware n’est pas indispensable au bon fonctionnement de votre application.

Regarder aussi : http://developer.android.com/guide/topics/manifest/permission-element.html pour plus de détails concernant la balise permission.

1.1.2       Obtenir et accorder des demandes de permission pour vos applications

De manière identique il est de votre responsabilité de protéger les données que vous confie l’utilisateur. Pour cela vous devez obliger les applications tierces à lui poser la question. Votre application peut posséder plusieurs demandes de permissions (accès en lecture, en écriture, pour tel type de données, pour tel autre).

Pour définir une permission, il faut définir :

·         Un nom symbolique unique à votre permission. Utilisez le nom de package de votre application suivi de « permission.NomCourtDeLaPermission ».

·         Un texte court et compréhensible qui sera affiché à l’utilisateur pour effectuer la demande.

·         Une description de la description ; un texte plus long et compréhensible, qui sera affiché à l’utilisateur aussi.

·         Un niveau (level) de permission (normal, dangerous, signature ou signatureOrSystem). Si vous n’en mettez pas le niveau est normal.

·         Un groupe de permission.

Ensuite il faut la déclarer dans le manifest.xml de votre application :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.me.app.myapp" >

 

    <permission android:name="packageName.permission.ShortPermissionName"

        android:label="@string/permlab_ShortPermissionName "

        android:description="@string/permdesc_ShortPermissionName "

        android:permissionGroup="android.permission-group.COST_MONEY"

        android:protectionLevel="dangerous" />

 

</manifest>

Ensuite il faut déclarer les Activity, Services ou ContentProvider qui utiliseront cette permission. Si vous n’avez fait que la déclarer en en-tête du fichier manifest.xml, elle ne sera pas appliquée. Pour l’appliquer à une activité ou à un service, toujours dans le manifest.xml, il suffit de rajouter à sa déclaration :

<activity

android :name= “ … “

android.label= “ … 

android :permission= “MyPermissionName”>

Dans le cas d’un ContentProvider, les balises sont :

 

<provider

android :name= “ … “

android.authorities= “ … 

android :readPermission= “MyPermissionName”

android :writePermission= “MyPermissionName”>

 

Enfin, n’oubliez pas de documenter dans vos activités, services ou fournisseurs de contenus les permissions requises pour les faire fonctionner.  Informez les autres développeurs pour qu’ils puissent s’interfacer avec vos applications, c’est de votre responsabilité de programmeur.

1.1.2.1         Le niveau (level) d’une permission.

Le level normal correspond à une permission pour une application à risque minimal. Le system accorde cette permission automatiquement, sans demander à l’utilisateur.

Le level dangerous correspond à une permission pour une application à risque élevé. Si vous utilisez des données privées de l’utilisateur c’est le level à utiliser. L’utilisateur sera interrogé.

Le level signature. Ce level permet d’autoriser automatiquement la permission aux applications tierces qui sont signées avec le même certificat que votre application

Le level signatureOrSystem. Ne l’utilisez pas sauf si vous travaillez pour Google dans le département android ou pour un constructeur. Dans ce cas, vous n’êtes pas en train de lire cette documentation. Donc toi lecteur, oublie ce level.

1.1.2.2       Le groupe d’une permission

La balise <permissionGroup> est optionnelle et n’est utilisée que pour aider le système à afficher la permission à l’utilisateur. Il est préconisé que vous liez votre application à un groupe existant, cela simplifie la présentation à l’utilisateur. La liste des groupes se trouve ici: android.Manifest.permission_group.