Android短信&在我读短信/未接来电后,未接来电内容接收器无法正常工作

时间:2014-01-22 22:21:52

标签: android sms contentobserver

您好我希望在手机中未读信息的数量发生变化且未接来电数量发生变化时收到通知,截至目前我的代码如下:

private ContentObserver unreadSMSCO;
private ContentObserver missedCallCO;

@Override
protected void onResume() {
    super.onResume();

    missedCallCO = new ContentObserver(new Handler()){
        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 ");
            int count = cursor.getCount();
            grid.SetPhoneCallNotification(count);
            cursor.close();
        }
    };

    unreadSMSCO = new ContentObserver(new Handler()){
        public void onChange(boolean selfChange){
            Cursor cursor = getContentResolver().query(Uri.parse("content://sms/"), null, "read = 0", null, null);

            int count = cursor.getCount();

            grid.SetSMSNotification(count);
            cursor.close();
        }
    };

    getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, unreadSMSCO);
    getContentResolver().registerContentObserver(Calls.CONTENT_URI, true, missedCallCO);
}


@Override
protected void onPause() {
    super.onPause();

    getContentResolver().unregisterContentObserver(unreadSMSCO);
    getContentResolver().unregisterContentObserver(missedCallCO);
}

当我收到一个新的短信时,这非常有效,但是当我点击通知或者去消息应用程序时阅读消息然后我回到这个应用程序它不会激活内容接收者通知我未读邮件的数量已更改。未接来电时会出现同样的情况,当有人给我打电话时我会收到通知但我没有回答但是当我转到通话记录以便通知消失时内容解析器不会被调用..

我在这里做错了什么,我是否需要添加一些东西才能起作用?

谢谢!

1 个答案:

答案 0 :(得分:0)

对于未接来电信息您需要在几秒钟的未接来电后拨打“missedCallCO”。

实际上在几秒钟的未接来电后,在android系统中未接来电更新。使用Thread并等待一些秒,如5或6,然后你肯定会得到它。

希望这会有所帮助