小さな通知アプリで遊んでいます。私の基本的な要件は次のとおりです。SMSが着信すると、LEDが点灯します。読んだら、それをオフにしてください。最初の部分は簡単に十分なようだ:私は私のマニフェストに次のようにBroadcastReceiver
がありますSMSがAndroidでいつ読み込まれるかを確認する良い方法はありますか?
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
しかし、第二部では、よりトリッキーであることが証明されました。 。十分に動作するようです
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;
:現在、私はメッセージが入って来たときに起動するサービスを持っていることは、このコードを実行TimerTask
15秒ごとに実行されます。カウントが0の場合、TimerTask
をキャンセルしてサービスを停止します。しかし、私はバッテリーの寿命に懸念しています。未読メッセージの数が変更された場合の一般的な通知はありますか?またはこれを行うためのより良い方法は?
いくつかの実験の後、私は内容にContentObserverを使用していました正しく。ありがとう! – mmebane