您的位置:首页 > 移动开发 > Android开发

Android应用开发基础篇(7)-----BroadcastReceiver

2012-02-22 18:58 555 查看
[b]一、概述[/b]

BroadcastReceiver,意思就是广播信息接收者,是Android的四大组件之一。它既可以接收系统广播出来的信息,也可以接收自定义的广播信息,比如说接收系统开机完成的信息,然后让某个程序启动,这就可以实现程序开机启动,又或者,某个程序需要通过Service发出的信息来更新UI,这时也可以使用BroadcastReceiver。

[b]二、要求[/b]

编写一个程序,能够接收自定义的广播信息,程序在接收到这个信息后把收到的信息显示到屏幕上。



[b]三、实现[/b]

新建工程MyBroadcast,修改/res/layout/main.xml文件,在里面添加一个Button和一个TextView,完整的main.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Button
android:id="@+id/mbutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="发送广播"
/>

<View
android:layout_width="fill_parent"
android:layout_height="70dp"
/>

<TextView
android:id="@+id/mtextview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="30dp"
android:textColor="#FF0000FF"
android:gravity="center_horizontal"
/>

</LinearLayout>


接着,修改MyBroadcastActivity.java文件,编写一个BroadcastReceiver的子类,实现它的onReceive()方法,注册一个接收者。完整的MyBroadcastActivity.java如下:

package com.nan.receiver;

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.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MyBroadcastActivity extends Activity
{
private Button mButton = null;
private TextView mTextView = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mTextView = (TextView)findViewById(R.id.mtextview);

mButton = (Button)findViewById(R.id.mbutton);
//设置按钮监听
mButton.setOnClickListener(new View.OnClickListener()
{

public void onClick(View v)
{
// TODO Auto-generated method stub
Intent mIntent = new Intent();
//设置接收动作
mIntent.setAction("com.nan.action.MY_ACTION");
//设置发送的内容
mIntent.putExtra("MY", "您好!");
//发送广播
sendBroadcast(mIntent);
}
});
//注册接收
registerReceiver(mReceiver,new IntentFilter("com.nan.action.MY_ACTION"));

}

//自定义一个继承BroadcastReceiver的类
private BroadcastReceiver mReceiver = new BroadcastReceiver()
{

@Override
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub
//显示接收到的信息
mTextView.setText(intent.getStringExtra("MY"));
}

};

}


好了,运行该程序,如下:



点击一下“发送广播”按钮,如下:



完成。

后记:

还可以把BroadcastReceiver的子类写在一个单独的java文件里,这时就需要修改AndroidManifest.xml文件,在里面声明一个receiver。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: