BroadcastReceiver que no reciben la intención
-
19-09-2019 - |
Pregunta
Así que ahora he declarado mi BroastcastReceiver en el archivo de manifiesto ...
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.CALL_BUTTON" />
</intent-filter>
</receiver>
Quiero atrapar la intención cuando se pulsa el botón de llamada.
Aquí está mi código ...
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "intent received", Toast.LENGTH_LONG);
if(intent.getAction().equals("android.intent.action.CALL_BUTTON")) {
Toast.makeText(context, "call button pressed", Toast.LENGTH_LONG);
}
}
}
Sin embargo, no veo la tostada cuando pulso el botón de llamada. ¿Me he perdido algo?
Esta es una continuación usando una respuesta de esta pregunta ...
Cómo utilizar Intentos de un servicio o de difusión receptor?
Solución
La respuesta corta es que no se puede hacer lo que estamos tratando de hacer.
La acción de 'ACTION_CALL_BUTTON' es una "acción Actividad de partida" en lugar de una "acción de difusión". Puede ser utilizado en un intento utilizado en startActivity
para poner en marcha una actividad que debería responder a la llamada que se presiona el botón. Lo que queremos es que se le notifique cuando se pulsa el botón de llamada, y el sistema no emite una intención de anunciar que.
Como alternativa, puede incluir el mismo intent-filter
en una actividad para que se subirá como una opción para que el usuario seleccione cuando presionan el botón de llamada.
¿Qué espera hacer cuando el usuario pulsa el botón de llamada?
Otros consejos
Por la documentación, ACTION_CALL_BUTTON
no es una emisión acción; más bien, se trata de una acción actividad.
mensaje de Dianne sobre esto en otro hilo.