检查是否已读取新的SMS

时间:2010-08-22 17:50:27

标签: android sms notifications message led

我正在为HTC EVO开发一个简单的应用程序,当收到新的短信时,它会闪烁备用通知LED。我通过广播接收器使这部分工作得很好,但是当用户使用他们的默认短信应用程序阅读消息时,我需要一些方法来关闭LED。我不确定在接收器或后台服务中是否最好这样做。我找到了this,这可能就是我想要的,但我不知道如何使用它,因为我找不到任何说明或教程。

2 个答案:

答案 0 :(得分:3)

好吧,我已经制定了以下代码,我认为这些代码符合我的需求。

private int getUnreadSMSCount()
{
    int count = 0;
    Uri smsURI = Uri.parse("content://sms");
    ContentResolver contentResolver = this.getContentResolver();
    Cursor cursor = contentResolver.query(smsURI, null, "read=0", null, null);
    if (cursor != null)
    {
        try
        {
            count = cursor.getCount();
        }
        finally
        {
            cursor.close();
        }
    }

    return count;

}

答案 1 :(得分:0)

不幸的是,我不相信有办法做到这一点。

当您的BroadcastReceiver收到Intent时,它是Intent的副本,与默认的短信应用相同。所以每个人都有独立于彼此的信息副本。

您可以设置自己要阅读的邮件副本,但无法在默认的SMS应用程序中查看其状态。此外,默认应用程序不发送已读取消息的广播,所有数据都保存在本地。

您能够实现此功能的唯一方法是编写完整的Messaging应用程序替换。

抱歉,我希望这会有所帮助,如果您有任何其他问题,请与我们联系。