【问题标题】:Checking if a new SMS has been read检查是否已读取新短信
【发布时间】:2010-08-22 17:50:27
【问题描述】:

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

【问题讨论】:

    标签: android sms notifications message led


    【解决方案1】:

    好的,我已经编写了以下代码,我认为可以满足我的需求。

    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;
    

    }

    【讨论】:

      【解决方案2】:

      很遗憾,我不相信有办法做到这一点。

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-22
        • 1970-01-01
        • 1970-01-01
        • 2018-10-19
        相关资源
        最近更新 更多