我正在玩一个小型通知应用程序。我的基本要求是:当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
并停止服务。但是,我担心电池寿命。当未读消息的数量发生变化时,是否有任何一般性通知?或者更好的方法呢?
答案 0 :(得分:3)
您可以使用ContentObserver。我想当新邮件进入短信收件箱时,你会收到通知(由内容观察者),另一方面,当读取短信时,它将从收件箱中删除,而且你还会得到另一个通知。
ps,使用ContentObserver观察内容:// sms / inbox