【问题标题】:Android sms & missed call contentreceiver not working after i read sms/missed call在我阅读短信/未接电话后,Android 短信和未接来电内容接收器无法正常工作
【发布时间】:2014-01-22 22:21:51
【问题描述】:

您好,我想在我的手机中未读消息数和未接电话数发生变化时收到通知,目前我的代码如下所示:

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);
}

当我收到一条新短信时,这非常有效,但是当我单击通知或转到消息应用程序并阅读消息然后我返回此应用程序时,它不会触发内容接收器来通知我未读消息的数量发生了变化。未接来电也会出现同样的情况,当有人打电话给我而我没有接听时,我会收到通知,但是当我转到通话记录以便通知消失时,内容解析器不会被调用..

我在这里做错了什么,我需要添加一些东西才能正常工作吗?

谢谢!

【问题讨论】:

    标签: android sms contentobserver


    【解决方案1】:

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

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

    希望对你有帮助

    【讨论】:

    • 我正在使用 contentObserver,我不需要调用任何东西。这个想法是 contentObserver 监视 contentURI 数据库中的更改,一旦他检测到更改,他就会触发事件“onChange”,该代码可以很好地检测我何时收到新消息或当我接到未接来电时,问题是当我去检查未读消息或未接来电的通知以便它们再次变为 0 时,contentObserver 不会触发
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多