Ich spiele mit einer kleinen Benachrichtigungs App herum. Meine grundlegenden Anforderungen sind: Wenn eine SMS eingeht, schalten Sie die LED ein. Wenn es gelesen wird, schalten Sie es aus. Der erste Teil scheint einfach genug: Ich habe ein BroadcastReceiver
mit folgendem in meinem Manifest:Gibt es eine gute Möglichkeit zu sagen, wenn eine SMS auf Android gelesen wird?
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
jedoch der zweite Teil komplizierter erwiesen hat. Derzeit habe ich einen Dienst, der startet, wenn eine Nachricht eingeht Es läuft ein TimerTask
alle 15 Sekunden, die diesen Code ausgeführt wird.
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;
Es scheint gut zu funktionieren. Wenn die Zählung 0 ist, annulliere ich die TimerTask
und stoppe den Dienst. Ich bin jedoch besorgt über die Akkulaufzeit. Gibt es eine allgemeine Benachrichtigung für die Anzahl der ungelesenen Nachrichten? Oder einen besseren Weg?
Nach einigen Experimenten hatte ich ContentObserver auf Inhalte zu verwenden: // mms-sms/für sie zu arbeiten, aber es scheint zu funktionieren richtig. Vielen Dank! – mmebane