tags:

views:

929

answers:

2

Hi,

I'd like my app to catch incoming SMS messages. There are a few examples of this around. Looks like we just need to do this:

// AndroidManifest.xml
<receiver android:name=".SMSReceiver"> 
  <intent-filter> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
  </intent-filter> 
</receiver>        

// SMSReceiver.java
public class SMSReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
        Log.i(TAG, "SMS received.");
        ....
    }
}

is this correct? I'm sending my phone some sms messages, but the log statement never gets printed. I do have some other SMS applications installed on the phone, which display a popup when the sms is received - are they somehow blocking the intent from getting passed down to my app, they are just consuming it completely?

Thanks

A: 

Did you try with the emulator ?

After deploying your application in the emulator, you can send events like SMS via the DDMS or via the command line by connecting with telnet :

telnet localhost <port_emulator>
send sms <incoming_tel_number> <sms_content>

port_emulator is usually 5554

kosokund
+2  A: 

You would also need to specify a uses-permission in your manifest file:

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

The following tutorials should help:

React on incoming SMS
SMS messaging in Android

Samuh
Ok this works, I had put my receiver declaration outside the <application> tag in my manifest. No error was reported, but the app just wouldn't catch the incoming SMS messages. Now it works. Thanks
Mark