Receptor de difusión para llamadas perdidas en android
¿Alguien sabe cuál es la intención de la llamada perdida. Realmente quiero enviar sms en la llamada perdida y la llamada incomming en mi aplicación.
- Los componentes de IntentReceiver no pueden enlazar servicios
- SMS reciben sin notificación
- Cómo ejecutar la aplicación en segundo plano en android?
- La difusión de la acción de intención BOOT_COMPLETED no funciona correctamente
- Android: ¿Cómo reanudar la aplicación y la actividad de BroadcastReceiver?
- ACTION_USER_PRESENT en el manifiesto con BroadcastReceiver
- Cancelación automática de la notificación en un momento determinado
- Cómo recibir sms de datos en dos puertos diferentes
- Fragmentos y receptores de emisión
- PendingIntents mantiene el mismo objeto en caché
- Cómo bloquear una llamada de número móvil y recepción de mensajes en el desarrollo de aplicaciones Android?
- ¿Cómo pasar datos a BroadcastReceiver?
- ¿Por qué Intent.createChooser () necesita un BroadcastReceiver y cómo implementarlo?
No hay transmisión específica para una llamada perdida, AFAIK.
Puede ver las emisiones de ACTION_PHONE_STATE_CHANGED
, espere hasta que el teléfono cambie de EXTRA_STATE_RINGING
a EXTRA_STATE_IDLE
, a continuación, intente comprobar el proveedor de contenido de CallLog
para ver si se ha perdido la llamada. No he probado esta técnica, pero puede funcionar.
Necesita utilizar un ContentObserver
public class MissedCallsContentObserver extends ContentObserver { public MissedCallsContentObserver() { super(null); } @Override public void onChange(boolean selfChange) { Cursor cursor = getContentResolver().query( Calls.CONTENT_URI, null, Calls.TYPE + " = ? AND " + Calls.NEW + " = ?", new String[] { Integer.toString(Calls.MISSED_TYPE), "1" }, Calls.DATE + " DESC "); //this is the number of missed calls //for your case you may need to track this number //so that you can figure out when it changes cursor.getCount(); cursor.close(); } }
Desde tu aplicación, sólo tienes que hacer esto:
MissedCallsContentObserver mcco = new MissedCallsContentObserver(); getApplicationContext().getContentResolver().registerContentObserver(Calls.CONTENT_URI, true, mcco);
- Error de dependencia de android-support-v4.jar
- NotificationManager.cancel (id) no funciona dentro de un receptor de difusión