Программирование под Android. Перехват входящих смс

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by exploiin, 7 Feb 2012.

  1. exploiin

    exploiin Banned

    Joined:
    30 Jan 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Доброго времени суток уважаемые ачатовцы! Совсем недавно решил попробовать себя в программировании под Android. Пишу приложение, суть которого в том, что оно перехватывает все входящие сообщения и если какое-либо сообщение удовлетворяет некоторым условиям, то оно тут же удаляется.

    После перехвата сообщения я имею экземпляр

    Code:
    SmsMessage. Я пытаюсь удалить его следующим образом:
    Uri deleteUri = Uri.parse("content://sms");
    context.getContentResolver().delete(
        deleteUri,
        "address=? and date=?",
        new String[] {sms.getOriginatingAddress(),
     String.valueOf(sms.getTimestampMillis())});
    
    После выполнения указанных действий смс сообщение остается в папке «Входящие».

    Я решил просмотреть всю папку «Входящие» следующим образом:

    Code:
    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: Может как-то можно обработать входящую смс раньше самой системы, чтобы пользователь даже уведомления не увидел?