您的位置:首页 > 移动开发 > Android开发

Android中短信的广播接收问题

2011-06-28 21:53 369 查看
首先,接收短信的机制是接收广播,由系统发出短信到来的广播,我们对短信广播进行注册,从而接收。

import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
public class SMSBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
for(Object p : pdus){
byte[] pdu = (byte[]) p;
SmsMessage message = SmsMessage.createFromPdu(pdu);
String content = message.getMessageBody();
Date date = new Date(message.getTimestampMillis());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String receiveTime = format.format(date);
String senderNumber = message.getOriginatingAddress();
sendSMS(content, receiveTime, senderNumber);

if("5556".equals(senderNumber)){
abortBroadcast();//终止广播
}
}
}


这是对短信进行广播监听的代码,下面是AndroidManifest.xml的配置

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.itcast.smslistener"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".SMSBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
</manifest>


稍微解释下:android:priority="1000"这是设置接收广播的优先级,好像是从0到1000还是多少,记不清楚,但是1000是最高的。

好了,有了这两个,就可以顺利的接收的短信了。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: