浏览 8774 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-07
我这里简单介绍一下,关键是在Manifest.xml里面需要正确的配置自己的SMS Reciever。主要是把Data这个参数加上去就可以了。 举例: -------------------------------------------------------------------- <application android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name=".SmsReceiver"> <intent-filter> <action android:name="android.intent.action.DATA_SMS_RECEIVED" /> <data android:scheme="sms" /> <data android:host="localhost" /> <data android:port="8888" /> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.SEND_SMS"> </uses-permission> <uses-permission android:name="android.permission.READ_SMS"> </uses-permission> <uses-permission android:name="android.permission.RECEIVE_SMS"> </uses-permission> ------------------------------------------------------------------------- public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //---get the SMS message passed in--- Log.e("SMS Received Begin Parse..", "SMS Received Begin Parse..\n"); Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String str = ""; if (bundle != null) { Log.e("SMS Received Begin Extrive..", "SMS Received Begin Extrive..\n"); //---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]); Log.e("getOriginatingAddress", msgs[i].getOriginatingAddress()); str += "SMS from " + msgs[i].getOriginatingAddress(); str += " :"; str += msgs[i].getMessageBody().toString(); str += "\n"; } //---display the new SMS message--- Log.e("SMS Received ", str); Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); } } } ---------------------------------------------------------------------- 看明白了吗,关键是这一组参数 <data android:scheme="sms" /> <data android:host="localhost" /> <data android:port="8888" /> 其中的port就是你所需要接受的端口号。 其实很简单吧。不过需要注意的是,在接受Android自己发出的DATA SMS时,那个解析的方式是会报错的,我也不知道为什么。但是,接受别的平台发过来的Text SMS时是没有问题的。 我已经在G1 1.5r1上做过测试了,希望这些消息能对大家有用。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-15
我在1.5,1.6的平台上,都拦截不到DATA_SMS_RECEIVED这个intent,怎么解决啊?
|
|
返回顶楼 | |
发表时间:2010-03-10
sendDataMessage发送的消息不能被DATA_SMS_RECEIVED的receiver接到啊。
不知该如何用。 |
|
返回顶楼 | |
发表时间:2010-04-04
那如何发出这个DATA SMS呢?
我们一般手机上能发的就是Text SMS吧? |
|
返回顶楼 | |