2012-06-02 14 views
5

Me gustaría que mi aplicación se registre como controlador para las llamadas telefónicas a través del cuadro de diálogo "Acción completa usando ...". He encontrado que funciona si uso la siguiente sintaxis en mi manifiesta:¿Cuál es la diferencia entre declarar un filtro de intención en una actividad frente a un receptor?

<activity android:name="my.class"> 
     <intent-filter> 
      <action android:name="android.intent.action.CALL_PRIVILEGED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="tel" /> 
     </intent-filter> 
    </activity> 

pero si me registro como un receptor de radiodifusión, mi aplicación no aparece en el "Completar la acción mediante ... "diálogo.

<receiver android:name="my.class"> 
     <intent-filter> 
      <action android:name="android.intent.action.CALL_PRIVILEGED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="tel" /> 
     </intent-filter> 
    </receiver> 

¿Cuál es la diferencia entre los dos aparte del tipo de clase que va a ser llamada una vez que la intención coincide con el filtro?

Respuesta

6

La diferencia es clara: la primera intentará iniciar un Activity, mientras que la segunda ejecutará un BroadcastReceiver. Qué usar depende de lo que quiere lograr; use BroadcastReceiver cuando quiera ver algún evento pero no quiere mostrar nada al usuario.

+0

Entiendo la diferencia entre una actividad y un BroadcastReceiver, pero mi pregunta era si existen diferencias en la forma en que el sistema operativo Android los trata. Por ejemplo, parece que solo aparecen Actividades en el selector de valores predeterminados del sistema operativo. ¿Hay otros problemas similares? – bmajz

Cuestiones relacionadas