2012-03-02 19 views
6

Tengo 2 aplicaciones.
Si utilizo el servicio, puedo ajustar el permiso por lo que sólo puede enviar app1 intención de app2:
Definir el permiso por app2 (protection level: signature), y usar ese permiso en app1.
El servicio en app2 está protegido por ese permiso.
De esta manera, sólo app1 puede enviar una intención de un servicio en app2, y ninguna otra aplicación (a menos que mi firma es filtrado) puede enviar la intención de servicio en app2.Restricción del receptor de difusión de Android desde la aplicación específica

¿Puedo hacer lo mismo con Broadcast Receiver?

  • app1: sendBroadcast (intención, permiso)
  • app2: definir el permiso, utilice ese permiso.

A mi entender para usar sendBroadcast (intento, permiso), la aplicación no necesita "usar" el permiso. Significado CUALQUIER aplicación puede enviar intento a app2. Esos parámetros de permiso solo se verificaron contra app2, para evitar que otras aplicaciones reciban esta intención. (Si quito app2, e instalar falsos app2 con la misma serie de permiso definido, falsa app2 puede conseguir intención de app1, que es inesperado)

Por cierto, si la aplicación definir el permiso y utilizarlo en sí, el ProtectionLevel (firma) parece no tener ningún significado. ¿Es esto cierto?

Ahora, puedo ajustar el permiso adicional:

  • app1: Definir el permiso, utilice ese permiso.
  • aplicación2: Receptor restringido solo para ese permiso.

De nuevo, si se quita app1, instala falsos app1 con el mismo permiso, falsa app1 puede enviar la intención falsa para app2. ¿Qué puedo hacer para evitar que app2 reciba un intento falso?

Gracias

+0

El la etiqueta también puede definir qué permisos deben tener los organismos de radiodifusión, consulte http://developer.android.com/guide/topics/manifest/receiver-element.html#prmsn –

Respuesta

5

La etiqueta también puede definir que el permiso de los organismos de radiodifusión deberían tener, ver http://developer.android.com/guide/topics/manifest/receiver-element.html#prmsn

que significa que puede proteger su receptor de transmisiones no autorizadas mediante la codificación de la siguiente manera:

... 
<permission android:name="com.yourapp.PERMISSION" 
    android:protectionLevel="signature" 
     android:label="@string/permission_label" 
     android:description="@string/permission_desc"> 
</permission> 
... 

<receiver android:name=".MyReceiver" 
    android:permission="com.yourapp.PERMISSION"> 
    <intent-filter> 
     <action android:name="com.yourapp.ACTION" /> 
    </intent-filter> 
</receiver> 
... 
Cuestiones relacionadas