Mogę złapać sms, widzę telefon nadawcy, ciało, mogę przerwać transmisję, jeśli nie podoba mi się ten sms, ale nie wiem jak oznaczyć ten sms jako przeczytać, że użytkownik może później odczytać w polu. Jakieś pomysły, jak mogę to zrobić?Android: jak oznaczyć sms jako przeczytany onReceive
Odpowiedz
To może pomóc:
private void markMessageRead(Context context, String number, String body) {
Uri uri = Uri.parse("content://sms/inbox");
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
try{
while (cursor.moveToNext()) {
if ((cursor.getString(cursor.getColumnIndex("address")).equals(number)) && (cursor.getInt(cursor.getColumnIndex("read")) == 0)) {
if (cursor.getString(cursor.getColumnIndex("body")).startsWith(body)) {
String SmsMessageId = cursor.getString(cursor.getColumnIndex("_id"));
ContentValues values = new ContentValues();
values.put("read", true);
context.getContentResolver().update(Uri.parse("content://sms/inbox"), values, "_id=" + SmsMessageId, null);
return;
}
}
}
}catch(Exception e)
{
Log.e("Mark Read", "Error in Read: "+e.toString());
}
}
Nie sądzę, że istnieje jakiekolwiek oficjalne wsparcie dla tego, ale to pytanie jest sposób to robi (nie próbował go jednak): Mark MMS as read programmatically
zły pomysł, sms, że złapię w onReceive nie jest "zawartość: // sms" –
@ Andrew-Należy "content: // sms/Skrzynka" .. –
Odpowiedź została podana tutaj: Set sms as read in Android
ContentValues values = new ContentValues();
values.put("read",true);
getContentResolver().update(Uri.parse("content://sms/inbox"),values,
"_id="+SmsMessageId, null);
gdzie "_id" jest przesłanie ID sprzedawcy
edytowany, dzięki NilayOnAndroid!
Powinno być „treści : // sms/inbox ".. –
Ponieważ Android 4.4 KitKat jedynym app może modyfikować dane SMS - SMS-app, który został ustawiony jako domyślny
tylko aplikację, która odbiera transmisję SMS_DELIVER_ACTION (określona przez użytkownika domyślna aplikacja do obsługi SMS-ów) może pisać do dostawcy SMS zdefiniowanego przez android.provider.Telefonia i podklasy
Więcej informacji można znaleźć tutaj: http://android-developers.blogspot.ru/2013/10/getting-your-sms-apps-ready-for-kitkat.html
Zrobiłem workarround dla wersji nowszych że KitKat, z odpowiedzią here: czy istnieją komunikaty mają być czytane, gdy użytkownik opuści aplikację, uruchom aplikację SMS z numeru, dla którego chcę wiadomości oznaczające przeczytane. Spowoduje to automatyczne oznaczenie wszystkich wiadomości jako przeczytanych.
@Override
public void onBackPressed() {
if (toBeRead) {
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", smsNumber);
//smsIntent.putExtra("sms_body","Body of Message");
startActivity(smsIntent);
toBeRead = false;
}
}
- 1. onReceive działa tylko raz Android
- 2. Android: jak mogę oznaczyć moją aplikację jako debuggable?
- 3. Uzyskaj identyfikator wątku wiadomości lub _id od onReceive android
- 4. Hg: Jak oznaczyć zestaw zmian jako "stabilny"
- 5. Jak oznaczyć wejście komórki JTable jako nieprawidłowe?
- 6. Jak mogę oznaczyć kod Perla jako przestarzałe?
- 7. Jak oznaczyć szablon struct jako przyjaciela?
- 8. Jak oznaczyć określony plik S3 jako Publiczny
- 9. Jak oznaczyć scenariusz ogórkowy jako Oczekujący
- 10. Jak oznaczyć klasę jako przestarzałą w Ruby?
- 11. android - sms type constants
- 12. Wykrywanie Silent Sms android
- 13. Usuń sms android po otrzymaniu bez opóźnienia
- 14. Android wysyła wiele wiadomości SMS
- 15. Czy możesz oznaczyć testy XUnit jako jawne?
- 16. Android - Słuchaj przychodzących wiadomości SMS
- 17. Android: Wysyłaj SMS i wyświetlaj w skrzynce SMS?
- 18. Zgłoszenie zamiaru wysłania wiadomości SMS na system Android
- 19. Jak oznaczyć jako przestarzałe pojedynczą wartość enum w Delphi
- 20. Doctrine: Jak oznaczyć wartość kolumny obiektu jako zabrudzoną?
- 21. Jak oznaczyć budowę jako niestabilną, gdy pojawił się trend ostrzegawczy?
- 22. Jak oznaczyć pakiet Python jako tylko Python 2?
- 23. Jak oznaczyć parametr przełącznika jako obowiązkowy w Powershell
- 24. Jak zadeklarować lub oznaczyć metodę Java jako nieaktualną?
- 25. Jak mogę oznaczyć właściwość jako przestarzałą w delphi?
- 26. Jak oznaczyć klasę jako singleton w języku UML?
- 27. BroadcastReceiver - onReceive Nie miano
- 28. BroadcastReceiver onReceive() wątek bezpieczny?
- 29. Jak oznaczyć aktywność
- 30. Android - Uzyskiwanie kontekstu z odbiornika Broadcast onReceive() do wysłania do
Czy to jest przeczytane wszystkie wiadomości w polu lub konkretnym – Prasad
Nie, tylko konkretna wiadomość z _id = SmsMessageId –
Wynik zwracany przez zapytanie aktualizacji wynosi 0. Jaki jest tego powód? –