BroadcastReceiver怎么使用

          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(){
			@Override
			public 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 {

	@Override
	public 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就可以了,也就是频率相同。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值