BroadcastReceiver怎么使用

来源:互联网 发布:mac铁锈红 编辑:程序博客网 时间:2024/05/19 21:41

          Android系统引入了一种信息传播机制----广播机制,这是一种广泛应用在应用程序之间传输信息的机制。比如低于变换,电量不足,来电来短信等。BroadcastReceiver相当 于广播接收器,类似于收音机。都知道收音机获取广播需要依靠频率来匹配,这里的频率就是Intent对象中的action属性。

         BroadcastReceiver用法比较简单,直接上代码。

        

         交互界面BroadcastReceiverActivity.java

package com.android;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/** *  * 注释部分代码为内部类实现广播接收, * 使用纯代码实现注册和注销广播接收 * */public class BroadcastReceiverActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        /*IntentFilter ifi = new IntentFilter();        ifi.addAction("com.android.innerbreceiver");        this.registerReceiver(br,ifi);*/        setContentView(R.layout.main);        Button button = (Button)findViewById(R.id.startButton);        button.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction("com.android.myreceiver");//intent.setAction("com.android.innerbreceiver");intent.putExtra("str", "message");sendBroadcast(intent);}});    }        /*BroadcastReceiver br = new BroadcastReceiver() {public void onReceive(Context context, Intent intent) {Log.v("InnerReceiver", intent.getStringExtra("str")+"");}};*/        /*public void onDestroy()    {    super.onDestroy();    this.unregisterReceiver(br);    }*/}

         简单的接收器MyReceiver.java

package com.android;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context arg0, Intent arg1) {Log.v("MyReceiver", arg1.getStringExtra("str")+"");}}

   

       注册文件AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.android"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="10" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <activity            android:label="@string/app_name"            android:name=".BroadcastReceiverActivity" >            <intent-filter >                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <receiver            android:name=".MyReceiver">            <intent-filter>                <action android:name="com.android.myreceiver"/>            </intent-filter>        </receiver>    </application></manifest>

        接收器只接收与自己有相同action的广播,<intent-filter>设置发送的广播相同的action就可以了,也就是频率相同。


原创粉丝点击