1

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

4

2 回答 2

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;

}

于 2010-08-23T23:52:52.467 回答
0

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

当您BroadcastReceiver收到Intent它时,它是 的副本Intent,与默认 SMS 应用程序相同。所以你们每个人都有彼此独立的消息副本。

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

您能够实现这一点的唯一方法是编写一个完全替代的消息应用程序。

抱歉,希望对您有所帮助,如果您还有其他问题,请告诉我。

于 2010-08-22T20:20:17.913 回答