He visto varios ejemplos de cómo implementar un BroadCastReceiver, pero ¿cómo debo implementar un servicio que tiene que reaccionar a algún intento pendiente (por ejemplo, llamada entrante) ... En realidad, me preguntaba el mismo "problema", pero en una actividad .. Usted, evidentemente, tiene una clase que se extiende de un servicio o una actividad) por lo que no se puede extender también BroadcastReceiver ... parece que no podemos hacer que los servicios de "plataforma"-conscientes y/o Activties?Servicio y BroadCastReceiver
Respuesta
Para registrar una actividad para recibir una cierta intención es necesario:
// Flag if receiver is registered
private boolean mReceiversRegistered = false;
// I think this is the broadcast you need for something like an incoming call
private String INCOMING_CALL_ACTION = "android.intent.action.PHONE_STATE";
// Define a handler and a broadcast receiver
private final Handler mHandler = new Handler();
private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Handle reciever
String mAction = intent.getAction();
if(mAction.equals(INCOMING_CALL_ACTION) {
// Do your thing
}
}
@Override
protected void onResume() {
super.onResume();
// Register Sync Recievers
IntentFilter intentToReceiveFilter = new IntentFilter();
intentToReceiveFilter.addAction(INCOMING_CALL_ACTION);
this.registerReceiver(mIntentReceiver, intentToReceiveFilter, null, mHandler);
mReceiversRegistered = true;
}
@Override
public void onPause() {
super.onPause();
// Make sure you unregister your receivers when you pause your activity
if(mReceiversRegistered) {
unregisterReceiver(mIntentReceiver);
mReceiversRegistered = false;
}
}
a continuación, también tendrá que añadir un filtro a su intención manifiesta:
<activity android:name=".MyActivity" android:label="@string/name" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</activity>
puede crear una clase interna
class A extends Activity {
BroadcastReceiver r = new BroadcastReceiver(){
// code to handle broadcase
}
}
esa clase recibirá eventos, los cuales se pueden pasar al controlador principal, o simplemente llamar a algunos métodos exterior
¿se requiere ser una clase interna? – n611x007
En realidad se puede reaccionar a la llamada telefónica entrante simplemente añadiendo oyente a TelephonyManager
Se define PhoneStateListener en su Servicio/Actividad
private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
break;
case TelephonyManager.CALL_STATE_IDLE:
break;
}
}
};
A continuación, en el método onCreate:
mTelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
Finalmente borras al oyente en onDestroy:
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
Mucho más simple en este caso.
- 1. Servicio de inicio de BroadcastReceiver
- 2. BroadcastReceiver vs Service
- 3. BroadcastReceiver para la ubicación
- 4. Android BroadcastReceiver android.intent.action.BATTERY_CHANGED
- 5. AlarmManager y BroadcastReceiver en lugar de Servicio, ¿es malo? (Tiempo de espera)
- 6. llamada Android TTS en BroadcastReceiver
- 7. usando getWindowManager() dentro BroadcastReceiver
- 8. BroadcastReceiver onReceive timeout
- 9. BroadcastReceiver para desconectar auriculares
- 10. BroadcastReceiver No recibe Broadcast
- 11. BroadcastReceiver como clase interna
- 12. startActivity() desde BroadcastReceiver
- 13. ACTION_USER_PRESENT en manifiesto con BroadcastReceiver
- 14. [Android] BroadcastReceiver (Action_headset_plug) no dispara
- 15. Show Complex Toast de BroadcastReceiver
- 16. Cómo crear BroadcastReceiver sin Actividad
- 17. Cómo pasar datos a BroadcastReceiver?
- 18. Recuperar requestcode de BroadcastReceiver alarma
- 19. getApplication en BroadcastReceiver en Android
- 20. diferencia principal entre el Manifiesto programático y registro de BroadcastReceiver
- 21. ¿Por qué Intent.createChooser() necesita un BroadcastReceiver y cómo implementarlo?
- 22. Flujo de datos entre Android BroadcastReceiver, ContentProvider y Activity?
- 23. Instancia diferente de Applicationcontext en Broadcastreceiver
- 24. Android BroadcastReceiver sin ninguna intención filtro
- 25. Android BroadcastReceiver sin filtros de intención
- 26. ¿Por qué llamar a setResult en BroadcastReceiver?
- 27. BroadcastReceiver con múltiples filtros o múltiples BroadcastReceivers?
- 28. ¿Puede un broadcastReceiver captar múltiples transmisiones?
- 29. Cómo detener manualmente en BroadcastReceiver androide
- 30. Necesito cancelar el registro de BroadcastReceiver 'anónimo'
si crea una nueva instancia de BroadcastReceiver y luego lo registra en su código proporcionando un objeto de filtro de intención, no necesita crear un en su definición de actividad en el archivo de manifiesto. –
hara