Как удалить смс послание приложение

Как удалить смс послание приложение

Итак, у меня была игра, и можно удалить полученное SMS. К сожалению, это не все простое плавание: (

У меня есть приемник, который собирает входящие SMS-сообщения. Теперь, как работает входящая маршрутизация Android SMS, часть кода, ответственного за декодирование сообщений, отправляет широковещательную передачу (она использует метод sendBroadcast(), который, к сожалению, НЕ является версией, которая позволяет просто называть abortBroadcast()) всякий раз, когда сообщение прибывает.

Мой приемник может быть вызван или не вызываться перед приемником системных SMS-сообщений, и в любом случае принятая трансляция не имеет свойства, которое могло бы отражать столбец _id в таблице SMS.

Однако, не будучи остановленным, я легко отправляю себя (через обработчика) сообщение с задержкой с SmsMessage в качестве прикрепленного объекта. (Я полагаю, вы тоже можете опубликовать Runnable…)

handler.sendMessageDelayed(handler.obtainMessage(MSG_DELETE_SMS, msg), 2500); 

Задержка заключается в том, чтобы к моменту поступления сообщения все приемники Broadcast завершили свой материал, и сообщение будет безопасно укомплектовано в таблице SMS.

Когда сообщение (или Runnable) получено здесь, это то, что я делаю:

case MSG_DELETE_SMS:     Uri deleteUri = Uri.parse("content://sms");     SmsMessage msg = (SmsMessage)message.obj;      getContentResolver().delete(deleteUri, "address=? and date=?", new String[] {msg.getOriginatingAddress(), String.valueOf(msg.getTimestampMillis())}); 

Я использую исходный адрес и поле timestamp, чтобы гарантировать очень высокую вероятность удаления ТОЛЬКО сообщения, которое меня интересует. Если бы я хотел быть еще более параноидальным, я мог бы включить контент msg.getMessageBody() в качестве части запроса.

Да, сообщение IS удалено (ура!). К сожалению, панель уведомлений не обновляется: (

Когда вы откроете область уведомлений, вы увидите сообщение, сидевшее там для вас… но когда вы нажмете на него, чтобы открыть его, он исчез!

Для меня это не совсем хорошо — я хочу, чтобы все следы сообщения исчезли — я не хочу, чтобы пользователь думал, что есть TXT, когда этого не происходит (это приведет только к сообщениям об ошибках).

Внутренне в ОС телефон вызывает MessagingNotification.updateNewMessageIndicator(Context), но я этот класс был скрыт от API, и я не хотел реплицировать весь этот код только для того, чтобы сделать индикатор точным.



Источник: qaru.site


Добавить комментарий