You can receive incoming SMS messages by using a BroadcastReceiver object.
The following code shows how to Receive SMS Messages.
Add the following statements in bold to the AndroidManifest.xml file:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.java2s.SMS" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".SMSActivity" > <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> </manifest>
Java code
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.util.Log; import android.widget.Toast; // w ww.ja va 2 s. c o m public class SMSReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent){ Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String str = "SMS from "; if (bundle != null){ 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]); if (i==0) { str += msgs[i].getOriginatingAddress(); str += ": "; } str += msgs[i].getMessageBody().toString(); } Toast.makeText (context, str, Toast.LENGTH_SHORT).show(); Log.d("SMSReceiver", str); } } }
Using the DDMS, send a message to the emulator. Your application should be able to receive the message and display it using the Toast class.