Android: Definiendo permisos para nuestra aplicación

lunes, 21 de enero de 2013 Etiquetas: , , ,


Introducción

En una entrada anterior del blog, vimos primero como escuchar los mensajes que envía Android cuando ocurren ciertos eventos. En un post posterior vimos como crear nuestro propio sistema de mensajes y que nuestra aplicación responda a estos, pero como ya dijimos, algunos de estos mensajes nos puede interesar que sean públicos y otros de uso interno de nuestra aplicación.

En esta entrada vamos a ver como poder crear nuestros propios permisos, y usarlo para  limitar el uso de los mensaje que hemos definido.


Dar permisos

Las aplicaciones Android definen en el fichero Manifest una serie de recursos que utilizan, y que el usuario a la hora de instalar la aplicación, debe dar permiso explicito para que se puedan utilizar. SE tienen que aceptar o rechazar todos para que la aplicación pueda ejecutarse correctamente.

Como en los apartados anteriores hemos creado nuestros propios mensajes, necesitamos definir nuevos permisos para restringuir el acceso, tanto para recibir como para enviar los mensajes.
Primero definimos nuestros permisos personalizados de la siguiente forma:

<manifest>
...
<permission android:name="com.acme.SEND_ACME_NOTIFICATIONS"
android:label="@string/send_acme_notifications_permission_label"
android:description="@string/send_acme_notifications_permission_description"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
android:protectionLevel="normal" />

<permission android:name="com.acme.RECEIVE_ACME_NOTIFICATIONS"
android:label="@string/receive_acme_notifications_permission_label"
android:description="@string/receive_acme_notifications_permission_description"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
android:protectionLevel="normal" />

<uses-permission android:name="com.acme.SEND_ACME_NOTIFICATIONS" />
<uses-permission android:name="com.acme.RECEIVE_ACME_NOTIFICATIONS" />
</manifest>

Primero definimos nuestros permisos personalizados, primero damos el nonmbre con android:name, después el texto que se mostrará al usuario con android:label y la descripción del permiso android:description.

Una vez definidos los permisos indicamos que vamos a usuar esos recursos y el usuario deberá dar premiso para su utilización. Ahora debemos indicar a la hora de leer el mensaje que dicho permiso es requerido para poder recibirlo.

  static final String SEND_ACME_NOTIFICATIONS = "com.acme.SEND_ACME_NOTIFICATIONS";
  .....
  @Override
  protected void onResume() {
  super.onResume();
  ...
  // Register the receiver
  super.registerReceiver(receiver, filter, 
        SEND_ACME_NOTIFICATIONS, null);  
  }

De la misma forma hay que hacerlo a la hora de enviarlo:

static final String RECEIVE_ACME_NOTIFICATIONS = 
             "com.acme.RECEIVE_ACME_NOTIFICATIONS";

...
this.sendBroadcast(intent, RECEIVE_ACME_NOTIFICATIONS);

0 comentarios:

Publicar un comentario