Nesse artigo aprenderemos como identificar uma mensagem sms recebida por um celular que possui um sistema operacional Android.

Antes de começarmos a aplicação vamos falar sobre BroadcastReceiver.

Um BroadcastReceiver representada pela classe content.BroadcastReceiver, é uma classe que recebe eventos gerados por um Intent, sem a necessidade da utilização de uma interface gráfica. Esses eventos são mensagens enviadas pelo sistema operacional que pode ser desde um aviso que a bateria está baixa ou uma comunicação que uma mensagem sms foi recebida.

Para demonstrar o recebimento de mensagens sms, utilizaremos a aplicação do artigo enviando uma mensagem sms.

Para autorizar o recebimento de mensagems sms precisamos de autorização, que será informada dentro do arquivo AndroidManifest.xml e configurar um recebimento de um BroadcastReceiver, veja sua configuração abaixo.

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="br.com.EnviarSMS"

      android:versionCode="1"

      android:versionName="1.0">

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".EnviarSMS"

                  android:label="@string/app_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

 

    <receiver android:name=".ReceberSMS" android:enabled="true">

            <intent-filter>

                  <action android:name="android.provider.Telephony.SMS_RECEIVED" ></action>

            </intent-filter>

      </receiver>

 

   

 

    </application>

    <uses-sdk android:minSdkVersion="7" />

   

<uses-permission android:name="android.permission.READ_SMS"></uses-permission>

<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>

<uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>

</manifest>

Observe a tag receiver que informa qual classe recebera o evento, e qual tipo de intent filter, que no nosso caso é uma mensagem sms.Irmos agora inserir uma classe e herdar da classe BroadcastReceiver.



Veja a classe abaixo.

import android.app.PendingIntent;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.telephony.SmsManager;

import android.telephony.SmsMessage;

import android.widget.Toast;

 

public class ReceberSMS extends BroadcastReceiver{

 

      @Override

      public void onReceive(Context context, Intent intent) {

            // TODO Auto-generated method stub

            Bundle bundle = intent.getExtras();

           

                       

            Object messages[]= (Object[]) bundle.get("pdus");

           

            SmsMessage smsMessage[] = new SmsMessage[messages.length];

           

            for(int n=0 ; n < messages.length; n++)

            {

                  smsMessage[n] = SmsMessage.createFromPdu((byte[])messages[n]);

                  String celular = smsMessage[n].getDisplayOriginatingAddress();

                  String Mensagem = smsMessage[n].getDisplayMessageBody();

                 

                  Toast.makeText(context,"Celular: " + smsMessage[n].getDisplayOriginatingAddress() + "Mensagem: " + smsMessage[n].getDisplayMessageBody() , Toast.LENGTH_LONG).show();

                 

                       

            }    

      }

}


Nos próximos artigos veremos como identificar uma ligação que recebemos.

Espero que tenham gostado e até a próxima.