Android广播接收器 Broadcast receiver 的用法简介

泡在网上的日子 / 文 发表于2013-07-03 18:34 次阅读 Broadcast,广播

在Android中,广播(broadcast)是非常有用的功能。通过广播可以通知其他广播接受这某个事件发生了。比如电源不足,信号不好等。

下面我做了一个简单的demo,首先看看activity

package com.android.broadcasttest;
                                          
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
                                          
public class BroadcastTest extends Activity {
    public static final String NEW_LIFEFORM_DETECTED =
        "com.android.broadcasttest.NEW_LIFEFORM";
                                              
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
                                                  
        Button btn0 = (Button)findViewById(R.id.btn0);
        btn0.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent it = new Intent(NEW_LIFEFORM_DETECTED);         
                sendBroadcast(it);
            }
        });
    }
}

在这个activity中生成了一个按钮,当按下按钮的时候通过sendBroadcast()发送一个广播。

我们再看看广播接收者代码:

package com.android.broadcasttest;
                    
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
                    
public class MyBroadcastReceiver extends BroadcastReceiver {
    public static final String BURN =
        "com.paad.alien.action.BURN_IT_WITH_FIRE";
                        
    public MyBroadcastReceiver () {
        Log.v("BROADCAST_TAG", "myBroadCast");
    }
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub      
        Toast.makeText(context, "成功接收广播:", Toast.LENGTH_LONG).show();  
    }
                    
}

在onReceive()中实现了当接收到广播所做的动作。

我们还需要在AndroidManifest.xml中注册该receiver

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

在receiver的action中定义了该receiver能够接受的广播。

收藏 赞 (0) 踩 (2)
上一篇: Android中常见的MVC模式
MVC模式的简要介绍 MVC是三个单词的缩写,分别为: 模型(Model), 视图 (View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑。 View层用于与用户的交互。 Controller层是Model与View之间沟通的桥梁,它可以分派
下一篇:Android中的图层样式layer-list的用法
layer-list可以将多个图片按照顺序层叠起来。 语法:在drawalbe/drawable-layer.xml中 layer-list xmlns:Android="http://schemas.android.com/apk/res/android" item android:drawable="@android:color/white" / item android:drawable="@drawable/logo_ove