Страница 1 из 2
Перехват смс с определенным содержанием
Добавлено: 17 июн 2012, 14:38
good
Всем привет.Совсем недавно решил попробовать себя в программировании под Android.Пробую писать приложение, суть которого в том, что оно перехватывает все входящие сообщения и если какое-либо сообщение удовлетворяет некоторым условиям, то оно тут же удаляется.Пробовал сделать так:
Активити
Код: Выделить всё
public class MessageReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Bundle pudsBundle = intent.getExtras();
Object[] pdus = (Object[]) pudsBundle.get("pdus");
SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]);
Log.i(TAG, messages.getMessageBody());
if(messages.getMessageBody().contains("Hi")) {
abortBroadcast();
}
}
манифест
Код: Выделить всё
<receiver android:name="com.encima.smsreceiver.MessageReceiver" android:exported="true">
<intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
Не работает.Что я делаю не так?
Re: Перехват смс с определенным содержанием
Добавлено: 18 июн 2012, 09:20
damager82
good писал(а):Не работает.Что я делаю не так?
Права в манифесте прописали?
android.permission.RECEIVE_SMS
Re: Перехват смс с определенным содержанием
Добавлено: 18 июн 2012, 10:18
good
Вот,что у меня в активити:
Код: Выделить всё
package com.sms.MessageReceiver;
import android.os.Bundle;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.util.Log;
public class MessageReceiverActivity extends BroadcastReceiver {
private static final String TAG = null;
public void onReceive(Context context, Intent intent) {
Bundle pudsBundle = intent.getExtras();
Object[] pdus = (Object[]) pudsBundle.get("pdus");
SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]);
Log.i(TAG, messages.getMessageBody());
if(messages.getMessageBody().contains("111")) {
abortBroadcast();
}
};
}
и в манифесте:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sms.MessageReceiver"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<activity
android:label="@string/app_name"
android:name=".MessageReceiverActivity" >
<receiver android:name=".MessageReceiverActivity" android:exported="true">
<intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>
</activity>
</manifest>
Re: Перехват смс с определенным содержанием
Добавлено: 18 июн 2012, 10:59
damager82
В манифесте у вас странности ...
receiver внутри activity, а должны быть на одном уровне
И атрибут android:name у них обоих одинаковый ...
MessageReceiverActivity - это не активити, это ресивер. Если ваше приложение не использует активити, то и в манифесте про activity ничего не должно быть.
Re: Перехват смс с определенным содержанием
Добавлено: 18 июн 2012, 13:34
good
Удалил активити в манифесте,все равно не работает(смс проходят).Не могли бы вы взглянуть мой проект под эклипс,если вам не трудно конечно?

Проект под эклипс
http://www.sendspace.com/file/c7vg9o
Re: Перехват смс с определенным содержанием
Добавлено: 19 июн 2012, 09:16
damager82
Пофиксил:
http://www.sendspace.com/file/v1w6bk
Манифест был некорректный. Там еще не было тэга Application.
Ну и тэг для логов был null. Но, возможно, это так задумано.
Re: Перехват смс с определенным содержанием
Добавлено: 19 июн 2012, 09:29
good
Пробую запустить у себя - все равно не работает,смс не проходят.Вы не могли бы у себя попробовать запустить?
Re: Перехват смс с определенным содержанием
Добавлено: 19 июн 2012, 09:35
damager82
good писал(а):Пробую запустить у себя - все равно не работает,смс не проходят.Вы не могли бы у себя попробовать запустить?
Я у себя запускал - у меня все ок.
Как тестируете? И где результат ищете?
И какая цель, уточните. Сейчас приложение ловит входящие смс. Насчет удаления я не смотрел.
Re: Перехват смс с определенным содержанием
Добавлено: 19 июн 2012, 09:44
good
Запускаю 2 эмуля.С эмуля 1 отправляю смс с текстом 111,на эмуле 2 принимаю смс.Приложение установил на эмуле 2.Результат - появляется оповещение о приходе смс и смс сохраняется.Цель - чтобы оповещение при приходе смс с определенным текстом не появлялось,смс не записывалось.
Re: Перехват смс с определенным содержанием
Добавлено: 20 июн 2012, 09:44
damager82
good писал(а):Запускаю 2 эмуля.С эмуля 1 отправляю смс с текстом 111,на эмуле 2 принимаю смс.Приложение установил на эмуле 2.Результат - появляется оповещение о приходе смс и смс сохраняется.Цель - чтобы оповещение при приходе смс с определенным текстом не появлялось,смс не записывалось.
А, да. Забыл приоритет вернуть в Intent Filter.
<intent-filter android:priority="999">
Re: Перехват смс с определенным содержанием
Добавлено: 20 июн 2012, 16:21
good
Огромное человеческое спасибо! Как мне вас отблагодарить?
Re: Перехват смс с определенным содержанием
Добавлено: 21 июн 2012, 09:07
damager82
good писал(а):Огромное человеческое спасибо! Как мне вас отблагодарить?
На то он и форум, чтобы помогать )
Re: Перехват смс с определенным содержанием
Добавлено: 04 мар 2013, 11:53
neoksi
Тут появился следующий вопрос:
Бывает приходят смс состоящие из 2х или более, как отловить смс с полным текстом?
Re: Перехват смс с определенным содержанием
Добавлено: 04 мар 2013, 12:06
rezak90
neoksi писал(а):Тут появился следующий вопрос:
Бывает приходят смс состоящие из 2х или более, как отловить смс с полным текстом?
писал давно, но вроде как там учёл все эти моменты
http://activity-android.blogspot.com/20 ... -post.html
Re: Перехват смс с определенным содержанием
Добавлено: 06 мар 2013, 05:46
neoksi
Это у тебя на отправку сообщений (и честно сложно читается, код с текстом сливается при взгляде).
Ответ нашел на хабре, но что-то сейчас страница недоступна со статьёй, как и многие другие, что в закладках, странно однако.
В общем смысл в том, что в первом посте этой темы приведен код чтения только первой смс, а вот код, как собрать полную смс:
Код: Выделить всё
Object[] pdus = (Object[]) pudsBundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
String sWho = messages[0].getOriginatingAddress();
StringBuilder bodyText = new StringBuilder();
for (int i = 0; i < messages.length; i++) {
bodyText.append(messages[i].getMessageBody());
}
String sBody = bodyText.toString();
Таким образом, если смс состоит из нескольких, то в переменной
sBody мы получаем полный текст сообщения и дальше можем над ним манипулировать.
Re: Перехват смс с определенным содержанием
Добавлено: 29 июн 2015, 16:42
sanya920
у меня вылетает приложение при получении сообщения. есть у кого исходник?
Re: Перехват смс с определенным содержанием
Добавлено: 23 авг 2015, 23:58
Mikhail_dev
Неправда. Это не мой номер.
Re: Перехват смс с определенным содержанием
Добавлено: 26 дек 2015, 09:54
MashaShyk
ЗНАЮ ОДНОГО ПАРНЯ, КОТОРЫЙ В СВОЕ ВРЕМЯ ПОМОГ РЕШИТЬ МНЕ РЯД СЕМЕЙНЫХ ПРОБЛЕМ С МУЖЕМ И ДЕТЬМИ: ПОМОГ С ПРОСЛУШКОЙ ИХ ТЕЛЕФОНОВ И РАСПЕЧАТКОЙ СМС ПЕРЕПИСОК. КОМУ НАДО ОБРАЩАЙТЕСЬ, НЕ ПОЖАЛЕЕТЕ, ВОТ ЕГО НОМЕР: +9298297542. А КСТАТИ ОН ЕЩЕ МОЖЕТ ВЗЛОМ СТРАНИЧЕК В СОЦСЕТЯХ ОРГАНИЗОВАТЬ, СКАЙПА И ЭЛЕКТРОННОЙ ПОЧТЫ
Re: Перехват смс с определенным содержанием
Добавлено: 04 май 2016, 19:30
Stalker1204
Доброе время суток.
Задача - аналогичная. Нужно передать СМС, выловить его, распарсить ну и выдать команду на исполняемое устройство.
Все работает. Но избавиться от уведомления и перемещения сообщения во входящие не получается.
Вроде не мешает, но как то не аккуратненько. Способ, описанный в этой ветке пробовал. Не спасает.
В инете есть инфа, что сообщение нужно удалять.
Но так же написано, что abortBroadcast() должен прекратить обработку сообщения вообще.
Подскажите что попробовать?
Re: Перехват смс с определенным содержанием
Добавлено: 09 июл 2016, 10:46
MashaShyk
ПРОСЛУШКА МОБИЛЬНОГО, ПЕРЕХВАТ СМС, ДЕТАЛИЗАЦИЯ, ВЗЛОМ СТРАНИЧЕК В СОЦСЕТЯХ, ВАЙБЕРА, ВАТСАПА, СКАЙПА, ОПРЕДЕЛЕНИЕ МЕСТОПОЛОЖЕНИЯ АБОНЕНТА ПО НОМЕРУ. ОБРАЩАЙТЕСЬ К ПРОФЕССИОНАЛАМ. КОНТАКТЫ: +79385045635