mercoledì 15 maggio 2013

Creare un BroadCast Receiver per gli sms su Android

Oggi vi spiegherò come creare un Broadcast Receiver su Android che riceva gli sms e scatena un determinato evento.

Iniziamo Subito:

Creamo una classe chiamata RicevitoreSms e scriviamoci dentro questo:

public class RicevitoreSms extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object messages[] = (Object[]) bundle.get(“pdus”);
SmsMessage smsMessage[] = new SmsMessage[messages.length];
smsMessage[0] = SmsMessage.createFromPdu((byte[]) messages[0]);
String corposms=smsMessage[0].getMessageBody()
;String mittente=smsMessage[0].getDisplayOriginatingAddress();
}
}
Come vedete la classe estende la superclasse broadcast receiver e “cattura” l’evento onReceive(), che in questo caso attende che il telefono riceva un sms per essere eseguito. In fondo alla classe, nelle variabili di tipo stringa corposms e mittente, avremo rispettivamente il testo del messaggio appena ricevuto e il mittente.

Se vogliamo che il messaggio non venga visualizzato sul tefefono, basterà inserire in fondo al metodo onReceive() la seguente linea di codice:

this.abortBroadcast();
Abbiamo quasi finito! L’ultimo passo ora è compilare il manifest adeguatamente.

Non è niente di difficile:

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
package=”example.com.Ricevitore”
android:versionCode=”1″
android:versionName=”1.0″ >
<uses-permission android:name=”android.permission.RECEIVE_SMS” />
<uses-permission android:name=”android.permission.READ_SMS” />

<uses-sdk
android:minSdkVersion=”8″
android:targetSdkVersion=”17″ />
<application
android:allowBackup=”true”
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >
<receiver
android:name=”example.com.RicevitoreSms”
android:enabled=”true” >
<intent-filter android:priority=”10000″ >
<action android:name=”android.provider.Telephony.SMS_RECEIVED” />
</intent-filter>
</receiver>
</application>

</manifest>

Sostanzialmente impostiamo i permessi per ricevere e leggere gli sms e creamo una nuova action con una priorità impostata a 10000 per essere sicuri che il programma venga eseguito “al di sopra ” di tutti gli altri!

Che dire allora, spero di esservi stato d’aiuto! Buon Lavoro!

Nessun commento:

Posta un commento