Я могу поймать sms, увидеть телефон-отправитель, тело, я могу прервать трансляцию, если мне не нравится этот sms, но я не знаю, как просто пометить этот sms как прочитанный, который пользователь может прочитать в поле позже. Любые идеи, как я могу это сделать?
Android: как пометить смс, как читать в onReceive
Ответ 1
Это может помочь вам:
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());
}
}
Ответ 2
Так как Android 4.4 KitKat единственное приложение может изменять sms-данные - SMS-приложение, которое было установлено по умолчанию
только приложение, которое получает широковещательную рассылку SMS_DELIVER_ACTION (указанное пользователем SMS-приложение по умолчанию), может писать поставщику SMS, определенному классом and подклассы android.provider.Telephony
Более подробную информацию можно найти здесь: http://android-developers.blogspot.ru/2013/10/getting-your-sms-apps-ready-for-kitkat.html
Ответ 3
Здесь был дан ответ: Установить смс как прочитанный в Android
ContentValues values = new ContentValues();
values.put("read",true);
getContentResolver().update(Uri.parse("content://sms/inbox"),values,
"_id="+SmsMessageId, null);
где "_id" - это идентификатор сообщения
Отредактировано, спасибо NilayOnAndroid!
Ответ 4
Я не думаю, что для этого есть какая-то официальная поддержка, но этот вопрос дает способ сделать это (хотя и не пробовал): Отметить MMS как прочитанное программно