Здравствуй, уважаемое Хабрасообщество! Совсем недавно решил попробовать себя в программировании под Android. Пишу приложение, суть которого в том, что оно перехватывает все входящие сообщения и если какое-либо сообщение удовлетворяет некоторым условиям, то оно тут же удаляется.
После перехвата сообщения я имею экземпляр SmsMessage. Я пытаюсь удалить его следующим образом:
Uri deleteUri = Uri.parse("content://sms");
context.getContentResolver().delete(
deleteUri,
"address=? and date=?",
new String[] {sms.getOriginatingAddress(), String.valueOf(sms.getTimestampMillis())});
После выполнения указанных действий смс сообщение остается в папке «Входящие».
Я решил просмотреть всю папку «Входящие» следующим образом:
Uri uriSms = Uri.parse("content://sms/inbox");
Cursor c = context.getContentResolver().query(uriSms, null,null,null,null);
while (c.moveToNext())
{
String body = c.getString(c.getColumnIndex("body"));
long data = c.getLong(c.getColumnIndex("date"));
String address = c.getString(c.getColumnIndex("address"));
}
c.close();
Выясняется, что data и sms.getTimestampMillis() отличаются примерно на 200 миллисекунд. То есть where условие в запросе на удаление не выполняется.
Может я что-то делаю неправильно? Прошу Вашей помощи.
UPD: Может как-то можно обработать входящую смс раньше самой системы, чтобы пользователь даже уведомления не увидел?