broadcast的处理有两种方式:
1.在清单文件AndroidManifest.xml文件中声明用户的广播接收器: (那么在app安装之后不论app打开与否,都会处理来自android系统的广播。)
<span style="white-space:pre"> </span><!-- 在清单文件中进行注册,那么当应用程序关闭的时候都会响应监听。 -->
<receiver android:name=".TestBroadcast">
<intent-filter>
<action android:name="android.intent.action.EDIT"></action>
</intent-filter>
</receiver>
2.在应用程序的代码中进行注册:
*那么当app关闭的时候系统不会触发监听,打开的时候才会触发监听:
广播的处理类:
<pre name="code" class="java">public class SMSReceiver extends BroadcastReceiver { {
public void onReceive(Context arg0, Intent arg1) {
}
}
public void deal(View v){
switch(v.getId()){
case R.id.btn1:
sms = new SMSReceiver(); //新建一个新的广播接收器
IntentFilter filter = new IntentFilter(); // 时间的过滤器
filter.addAction(SMSIntent);
BroadcastSMSActivity.this.registerReceiver(sms, filter); //在打开activity时进行注册、
Toast.makeText(this, "绑定广播事件!",Toast.LENGTH_LONG).show();
break;
case R.id.btn2:
BroadcastSMSActivity.this.unregisterReceiver(sms); //解除对该activity的绑定
Toast.makeText(this, "解除广播事件!",Toast.LENGTH_LONG).show();
break;
}
}
—————————————————对短信内容的接收—————————————————————————
1.清单文件中加入:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
2.广播处理类的onreceive方法的定义:
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
System.out.println("接收到了短消息的广播事件!");
//广播短消息的事件处理】
/*当收到短信时,就会触发此方法*/
Bundle bundle = arg1.getExtras();
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++){
smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
//产生一个Toast
Toast toast = Toast.makeText(arg0, "短信内容: " + smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);
//设置toast显示的位置
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 200);
//显示该Toast
toast.show();
}