android的广播介绍,在程序中注册广播

来源:互联网 发布:论文账务处理程序优化 编辑:程序博客网 时间:2024/06/04 17:56

利用代码注册 BroadcastReceiver 时有以下步骤:

   1)生成一个 BroadcastReceiver 对象;

   2)生成一个 IntentFilter 对象;

   3)为 IntentFilter 对象添加一个 Action ;

   4)利用 IntentFilter 和 BroadcastReceiver 绑定注册一个 BroadcastReceiver 到系统中,当系统广播该Action事件的时候,就出发该BroadcastReceiver。


1 首先定义一个activity

public class BroadcastDemoActivity extends Activity {    private Button regButton,unregButton;    final static String SMSReceiver = "android.provider.Telephony.SMS_RECEIVED";//接收短信的广播    private MyBroadReceiver myBroadReceiver;//广播接收者    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                initView();    }private void initView() {regButton = (Button) this.findViewById(R.id.reg);regButton.setOnClickListener(new RegListener());//这里不能在内部类中注册广播,会报错unregButton = (Button) this.findViewById(R.id.reg);unregButton.setOnClickListener(new RegListener());}private class RegListener implements View.OnClickListener{public void onClick(View v) {switch(v.getId()){case R.id.reg:myBroadReceiver = new MyBroadReceiver();//此对象用于接收广播,IntentFilter filter = new IntentFilter();filter.addAction(SMSReceiver);//注册一个接收短信的广播//将广播接收者注册到系统中BroadcastDemoActivity.this.registerReceiver(myBroadReceiver, filter);break;case R.id.unreg://从系统中解除广播接收者BroadcastDemoActivity.this.unregisterReceiver(myBroadReceiver);break;}}}}

2,定义一个接收广播的类,这里简单处理,只打印一个广播到来的信息。

public class MyBroadReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Log.i("MyBroadReceiver", "sms is comming");}}

3,由于订阅了接收短信的广播,所以要声明接收短信的权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.cjf.broadcast"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="8" />    <uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 接收短信权限 -->    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <activity            android:name=".BroadcastDemoActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

4,代码完成,点击注册按钮,然后用模拟器发送一条短信。LogCat会打印出短信到来的信息

原创粉丝点击