broadcast receiver for missed call in android

后端 未结 2 1090
误落风尘
误落风尘 2020-11-30 12:44

Does anyone know what is the intent for missed call. Actually i want to send sms on missed call and incomming call in my application.

相关标签:
2条回答
  • 2020-11-30 13:32

    You need to use a 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();
        }
    }
    

    From your app, you just need to do this:

    MissedCallsContentObserver mcco = new MissedCallsContentObserver();
    getApplicationContext().getContentResolver().registerContentObserver(Calls.CONTENT_URI, true, mcco);
    
    0 讨论(0)
  • 2020-11-30 13:41

    There is no specific broadcast for a missed call, AFAIK.

    You can watch for ACTION_PHONE_STATE_CHANGED broadcasts, wait until the phone shifts from EXTRA_STATE_RINGING to EXTRA_STATE_IDLE, then try checking the CallLog content provider to see if the call was missed. I have not tried this technique, but it may work.

    0 讨论(0)
提交回复
热议问题