Как анализировать входящие SMS на Android? - PullRequest
19 голосов
/ 09 января 2011

Как я могу кодировать в Android, чтобы мое приложение могло анализировать входящие SMS и, возможно, блокировать его или что-то делать (возможно, переместить в другую папку SMS), ДО того, как SMS фактически вызовет уведомление о новом SMS? Я бы нацелился на Android 2.1 и выше.

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

Ответы [ 3 ]

24 голосов
/ 23 февраля 2011

Я использую этот код в качестве BroadcastReceiver:

public void onReceive(Context context, Intent intent) 
{   
    //this stops notifications to others
    this.abortBroadcast();

    //---get the SMS message passed in---
    Bundle bundle = intent.getExtras();   
    SmsMessage[] msgs = null;
    String str = "";            
    if (bundle != null)
    {
        //---retrieve the SMS message received---
        Object[] pdus = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];            
        for (int i=0; i<msgs.length; i++){
            msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
            str += "SMS from " + msgs[i].getOriginatingAddress();
            from = msgs[i].getOriginatingAddress();
            str += " :";
            str += msgs[i].getMessageBody().toString();
            msg = msgs[i].getMessageBody().toString();
            str += "\n"; 
        }
        if(checksomething){
            //make your actions
            //and no alert notification and sms not in inbox
        }
        else{
            //continue the normal process of sms and will get alert and reaches inbox
            this.clearAbortBroadcast();
        }
  }

не забудьте добавить его в манифест и добавить наивысший приоритет (100) для широковещательной рассылки, или смс отправится первым во входящие и получит уведомление о предупреждении.

    <receiver android:name=".SmsReceiver">
        <intent-filter android:priority="100">
            <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
        </intent-filter>
    </receiver>

Надеюсь, это поможет вам.

0 голосов
/ 29 февраля 2012

Этот код работает на моем устройстве 2.3.3.HTC MyTouch 4g Slide.abortBroadcast подавляет звуковое уведомление + уведомление в строке состояния + не позволяет SMS-сообщениям входить в почтовый ящик.Некоторые пользователи упоминали, что он не работает на реальных устройствах и работает только на эмуляторе, что не всегда так.Если приоритет равен 100, то на этом конкретном устройстве код работает должным образом.

0 голосов
/ 09 января 2011

Ну, вы можете перехватить входящие SMS, но я думаю, что вы не сможете заблокировать уведомление .....
Если вы хотите удалить SMS, вот ветка, которая может помочь ....
Как программно удалить SMS из почтового ящика в Android?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...