广播接收者通过AndroidManifest.xml中< receiver>配置,过滤接收指定信息内容。如下:过滤接收短信息。
第一步:
在AndroidManifest.xml中
< application android:icon="@drawable/icon" android:label="@string/app_name">
< receiver android:name=".MyBroadcastReceiver">
< intent-filter>
< action android:name="android.provider.Telephony.SMS_RECEIVED"/>
< /intent-filter>
< /receiver>
< uses-permission android:name="android.permission.RECEIVE_SMS"/>< !-- 接收短信权限 -->
< uses-permission android:name="android.permission.SEND_SMS"/>< !-- 发送短信权限 -->
< /application>
第二步:
public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
@Override public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) {
SmsManager sms = SmsManager.getDefault();
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
for (SmsMessage message : messages){
String msg = message.getMessageBody();
String to = message.getOriginatingAddress();
sms.sendTextMessage(to, null, msg, null, null);
}}}}}
补充说明:除了短信到来广播Intent,Android还有很多广播Intent,如:开机启动、电池电量变化、时间已经改变等广播Intent。
接收电池电量变化广播Intent ,在AndroidManifest.xml文件中的< application>节点里订阅此Intent:
< receiver android:name=".MyBroadcastReceiver">
< intent-filter>
< action android:name="android.intent.action.BATTERY_CHANGED"/>
< /intent-filter>
< /receiver>
接收开机启动广播Intent,在AndroidManifest.xml文件中的< application>节点里订阅此Intent:
< receiver android:name=".IncomingSMSReceiver">
< intent-filter>
< action android:name="android.intent.action.BOOT_COMPLETED"/>
< /intent-filter>
< /receiver>
并且要进行权限声明:
< uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
→如果您认为本文档还有待完善,请 编辑文档