BroadcastReceiver广播事件
2015-06-10 18:17
295 查看
1、广播有两种注册配置方法:
`
2、发送广播:
`
`
第一种:在代码中配置注册广播 ` IntentFilter inf = new IntentFilter(); inf.addAction("cm.example.android5module_broadcastreceiver_action"); registerReceiver(new ActivityReceiver(), inf);//注册接收器 registerReceiver(br, inf);//注册接收器
第二种:在配置文件中配置广播
<receiver android:name=".ActivityReceiver" > <intent-filter > <action android:name="cm.example.android5module_broadcastreceiver_action"/> </intent-filter> </receiver>
`
2、发送广播:
`
Intent intent = new Intent(); intent.setAction("cm.example.android5module_broadcastreceiver_action"); sendBroadcast(intent);
3、MainActivity代码如下:
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.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
Button bt;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = (Button)this.findViewById(R.id.button);
tv = (TextView)this.findViewById(R.id.textview);
//处理广播发过来的数据
ActivityReceiver.handler = new Handler(){
public void handleMessage(Message msg) {
if(msg.what == 0x112){
tv.append(msg.obj.toString());
}
}
};
//广播做出的反应,也可单独放在一个类中。放在本类中只能为代码配置的广播做出反应。因为配置文件里配置的广播要求是单独的类。
final BroadcastReceiver br = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("cm.example.android5module_broadcastreceiver_action")){
String str = "Yes";
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
}
}
};
bt.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//第一种:代码中注册广播
IntentFilter inf = new IntentFilter();
inf.addAction("cm.example.android5module_broadcastreceiver_action");
registerReceiver(new ActivityReceiver(), inf);//注册接收器
registerReceiver(br, inf);//注册接收器
//第二种:在配置文件Manifest.xml中配置receiver
/*
* <receiver android:name=".ActivityReceiver" > <intent-filter > <action android:name="cm.example.android5module_broadcastreceiver_action"/> </intent-filter> </receiver>* */
//发送广播
Intent intent = new Intent(); intent.setAction("cm.example.android5module_broadcastreceiver_action"); sendBroadcast(intent);}
});
}
}
4、ActivityReceiver代码如下:
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Handler; import android.os.Message; public class ActivityReceiver extends BroadcastReceiver{ public static Handler handler; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals("cm.example.android5module_broadcastreceiver_action")){ Message msg = new Message(); msg.what = 0x112; msg.obj = "alreadyreceiver"; handler.sendMessage(msg); } } }
5、activity_main.xml如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button" android:text="发送广播" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" android:id="@+id/textview" /> </LinearLayout>
`
相关文章推荐
- 【深入JAVA】JDK静动态代理
- STM32硬件缺陷
- sp_pv_channel_portfolio_product
- USB转串口驱动代码分析
- 深入浅出讲解:php的socket通信[转]
- php代码审计工具
- redis window版本
- USB设备驱动概述
- USB设备驱动概述
- USB设备驱动概述
- USB设备驱动概述 分类: USB OTG驱动 windows驱动程序WDM 2015-06-10 18:15 426人阅读 评论(0) 收藏
- 文件的读写操作3
- 动态网页爬取例子(WebCollector+selenium+phantomjs)
- 去除EditText的下划线
- Android onActivityResult获取返回值的用法
- 安装 vsftp
- shell 空格问题
- C++标准里 string和wstring
- AndroidDevTools简介
- android的EditText字数检测和限制