Recebendo Mensagens: Android

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

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.

http://www.twitter.com/nandinhors
http://www.nandosilva.com/

Artigos relacionados