In this tutorial we will learn how to Receive a SMS and retrieve the Message and Sender's Phone Number.
To learn How to Send SMS read this How to Send SMS
We need to have a receiver class that will extend BroadcastReceiver class.
To receive SMS we to declare <uses-permission android:name="android.permission.RECEIVE_SMS"> in manifest file
Some More Good Android Topics
Create a new Class SMSReceiver
In manifest we need to register the SMSReceiver like this
<receiver android:name=".SmsReceiver"> <intent-filter> <action android:name= "android.provider.Telephony.SMS_RECEIVED" /> </intent-filter>
</receiver>
Your manifest file should look like this<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.learn2develop.SMSMessaging"
android:versionCode="1"
android:versionName="1.0.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SMS"
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=".SmsReceiver">
<intent-filter>
<action android:name=
"android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
<!-- Permission to Receive SMS -->
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
</manifest>
SMSReceiver class
public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //---get the SMS message passed in--- Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String messageReceived = ""; 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]); messageReceived += msgs[i].getMessageBody().toString(); messageReceived += "\n"; }//---display the new SMS message--- Toast.makeText(context, messageReceived, Toast.LENGTH_SHORT).show();
// Get the Sender Phone Number
String senderPhoneNumber=msgs.getOriginatingAddress ();} } }To get the Sender's Number use msgs.getOriginatingAddress ()
No comments :
Post a Comment