有没有一种好方法可以告诉我何时在Android上阅读短信?

时间:2011-01-17 01:38:59

标签: android sms

我正在玩一个小型通知应用程序。我的基本要求是:当SMS进入时,打开LED。读取后,将其关闭。第一部分似乎很容易:我的清单中有BroadcastReceiver以下内容:

<intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>

然而,第二部分已证明更棘手。目前,我有一个服务,只要有消息进入就会启动。它每15秒运行一次TimerTask运行此代码:

int count = 0;

Uri providerURI = Uri.parse( "content://sms" );
Cursor cursor = this.getContentResolver().query( providerURI, null, "read=0", null, null );

if( cursor != null ) {
    try {
        count = cursor.getCount();
    }
    finally {
        cursor.close();
    }
}

return count;

它似乎运作良好。当计数为0时,我取消TimerTask并停止服务。但是,我担心电池寿命。当未读消息的数量发生变化时,是否有任何一般性通知?或者更好的方法呢?

1 个答案:

答案 0 :(得分:3)

您可以使用ContentObserver。我想当新邮件进入短信收件箱时,你会收到通知(由内容观察者),另一方面,当读取短信时,它将从收件箱中删除,而且你还会得到另一个通知。

ps,使用ContentObserver观察内容:// sms / inbox