Перехват смс с определенным содержанием

good
Сообщения: 6
Зарегистрирован: 17 июн 2012, 14:06

Перехват смс с определенным содержанием

Сообщение good » 17 июн 2012, 14:38

Всем привет.Совсем недавно решил попробовать себя в программировании под 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>
Не работает.Что я делаю не так?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Перехват смс с определенным содержанием

Сообщение damager82 » 18 июн 2012, 09:20

good писал(а):Не работает.Что я делаю не так?
Права в манифесте прописали?
android.permission.RECEIVE_SMS
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

good
Сообщения: 6
Зарегистрирован: 17 июн 2012, 14:06

Re: Перехват смс с определенным содержанием

Сообщение good » 18 июн 2012, 10:18

Вот,что у меня в активити:

Код: Выделить всё

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>

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Перехват смс с определенным содержанием

Сообщение damager82 » 18 июн 2012, 10:59

В манифесте у вас странности ...
receiver внутри activity, а должны быть на одном уровне
И атрибут android:name у них обоих одинаковый ...

MessageReceiverActivity - это не активити, это ресивер. Если ваше приложение не использует активити, то и в манифесте про activity ничего не должно быть.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

good
Сообщения: 6
Зарегистрирован: 17 июн 2012, 14:06

Re: Перехват смс с определенным содержанием

Сообщение good » 18 июн 2012, 13:34

Удалил активити в манифесте,все равно не работает(смс проходят).Не могли бы вы взглянуть мой проект под эклипс,если вам не трудно конечно? ;) Проект под эклипс http://www.sendspace.com/file/c7vg9o

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Перехват смс с определенным содержанием

Сообщение damager82 » 19 июн 2012, 09:16

good писал(а):Проект под эклипс http://www.sendspace.com/file/c7vg9o
Пофиксил: http://www.sendspace.com/file/v1w6bk
Манифест был некорректный. Там еще не было тэга Application.
Ну и тэг для логов был null. Но, возможно, это так задумано.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

good
Сообщения: 6
Зарегистрирован: 17 июн 2012, 14:06

Re: Перехват смс с определенным содержанием

Сообщение good » 19 июн 2012, 09:29

Пробую запустить у себя - все равно не работает,смс не проходят.Вы не могли бы у себя попробовать запустить?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Перехват смс с определенным содержанием

Сообщение damager82 » 19 июн 2012, 09:35

good писал(а):Пробую запустить у себя - все равно не работает,смс не проходят.Вы не могли бы у себя попробовать запустить?
Я у себя запускал - у меня все ок.
Как тестируете? И где результат ищете?

И какая цель, уточните. Сейчас приложение ловит входящие смс. Насчет удаления я не смотрел.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

good
Сообщения: 6
Зарегистрирован: 17 июн 2012, 14:06

Re: Перехват смс с определенным содержанием

Сообщение good » 19 июн 2012, 09:44

Запускаю 2 эмуля.С эмуля 1 отправляю смс с текстом 111,на эмуле 2 принимаю смс.Приложение установил на эмуле 2.Результат - появляется оповещение о приходе смс и смс сохраняется.Цель - чтобы оповещение при приходе смс с определенным текстом не появлялось,смс не записывалось.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Перехват смс с определенным содержанием

Сообщение damager82 » 20 июн 2012, 09:44

good писал(а):Запускаю 2 эмуля.С эмуля 1 отправляю смс с текстом 111,на эмуле 2 принимаю смс.Приложение установил на эмуле 2.Результат - появляется оповещение о приходе смс и смс сохраняется.Цель - чтобы оповещение при приходе смс с определенным текстом не появлялось,смс не записывалось.
А, да. Забыл приоритет вернуть в Intent Filter.

<intent-filter android:priority="999">
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

good
Сообщения: 6
Зарегистрирован: 17 июн 2012, 14:06

Re: Перехват смс с определенным содержанием

Сообщение good » 20 июн 2012, 16:21

Огромное человеческое спасибо! Как мне вас отблагодарить?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Перехват смс с определенным содержанием

Сообщение damager82 » 21 июн 2012, 09:07

good писал(а):Огромное человеческое спасибо! Как мне вас отблагодарить?
На то он и форум, чтобы помогать )
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Перехват смс с определенным содержанием

Сообщение neoksi » 04 мар 2013, 11:53

Тут появился следующий вопрос:
Бывает приходят смс состоящие из 2х или более, как отловить смс с полным текстом?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Перехват смс с определенным содержанием

Сообщение rezak90 » 04 мар 2013, 12:06

neoksi писал(а):Тут появился следующий вопрос:
Бывает приходят смс состоящие из 2х или более, как отловить смс с полным текстом?
писал давно, но вроде как там учёл все эти моменты http://activity-android.blogspot.com/20 ... -post.html
R.id.team
Политика на форуме запрещена

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Перехват смс с определенным содержанием

Сообщение neoksi » 06 мар 2013, 05:46

rezak90 писал(а):...
писал давно, но вроде как там учёл все эти моменты http://activity-android.blogspot.com/20 ... -post.html
Это у тебя на отправку сообщений (и честно сложно читается, код с текстом сливается при взгляде).

Ответ нашел на хабре, но что-то сейчас страница недоступна со статьёй, как и многие другие, что в закладках, странно однако.

В общем смысл в том, что в первом посте этой темы приведен код чтения только первой смс, а вот код, как собрать полную смс:

Код: Выделить всё

        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 мы получаем полный текст сообщения и дальше можем над ним манипулировать.

sanya920
Сообщения: 3
Зарегистрирован: 29 июн 2015, 16:41

Re: Перехват смс с определенным содержанием

Сообщение sanya920 » 29 июн 2015, 16:42

у меня вылетает приложение при получении сообщения. есть у кого исходник?


MashaShyk
Сообщения: 2
Зарегистрирован: 23 авг 2015, 23:14

Re: Перехват смс с определенным содержанием

Сообщение MashaShyk » 26 дек 2015, 09:54

ЗНАЮ ОДНОГО ПАРНЯ, КОТОРЫЙ В СВОЕ ВРЕМЯ ПОМОГ РЕШИТЬ МНЕ РЯД СЕМЕЙНЫХ ПРОБЛЕМ С МУЖЕМ И ДЕТЬМИ: ПОМОГ С ПРОСЛУШКОЙ ИХ ТЕЛЕФОНОВ И РАСПЕЧАТКОЙ СМС ПЕРЕПИСОК. КОМУ НАДО ОБРАЩАЙТЕСЬ, НЕ ПОЖАЛЕЕТЕ, ВОТ ЕГО НОМЕР: +9298297542. А КСТАТИ ОН ЕЩЕ МОЖЕТ ВЗЛОМ СТРАНИЧЕК В СОЦСЕТЯХ ОРГАНИЗОВАТЬ, СКАЙПА И ЭЛЕКТРОННОЙ ПОЧТЫ

Stalker1204
Сообщения: 1
Зарегистрирован: 04 май 2016, 19:12

Re: Перехват смс с определенным содержанием

Сообщение Stalker1204 » 04 май 2016, 19:30

Доброе время суток.
Задача - аналогичная. Нужно передать СМС, выловить его, распарсить ну и выдать команду на исполняемое устройство.
Все работает. Но избавиться от уведомления и перемещения сообщения во входящие не получается.
Вроде не мешает, но как то не аккуратненько. Способ, описанный в этой ветке пробовал. Не спасает.
В инете есть инфа, что сообщение нужно удалять.
Но так же написано, что abortBroadcast() должен прекратить обработку сообщения вообще.
Подскажите что попробовать?

MashaShyk
Сообщения: 2
Зарегистрирован: 23 авг 2015, 23:14

Re: Перехват смс с определенным содержанием

Сообщение MashaShyk » 09 июл 2016, 10:46

ПРОСЛУШКА МОБИЛЬНОГО, ПЕРЕХВАТ СМС, ДЕТАЛИЗАЦИЯ, ВЗЛОМ СТРАНИЧЕК В СОЦСЕТЯХ, ВАЙБЕРА, ВАТСАПА, СКАЙПА, ОПРЕДЕЛЕНИЕ МЕСТОПОЛОЖЕНИЯ АБОНЕНТА ПО НОМЕРУ. ОБРАЩАЙТЕСЬ К ПРОФЕССИОНАЛАМ. КОНТАКТЫ: +79385045635

Ответить