package com.potato;
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;
/**
* Broadcast Receiver:我们可以通过
* Context.sendBroadcast()
* Context.sendOrderedBroadcast()
* Context.sendStickyBroadcast()
* 这些方法,传递Intent给感兴趣的广播。
*/
public class BroadcastDemoActivity extends Activity {
public static final String INTENAL_ACTION_1 = "com.potato.INTENT_ACTION_1";
public static final String INTENAL_ACTION_2 = "com.potato.INTENT_ACTION_2";
public static final String INTENAL_ACTION_3 = "com.potato.INTENT_ACTION_3";
// 权限(蓝牙)
private static final String BLUETOOTH_PERMISSION = android.Manifest.permission.BLUETOOTH;
private boolean mIsOrderBroadcast = false;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 静态注册broadcastReceiver(就是在androidMainifest.xml中注册) // 注1
Button btnImplictBroadcast = (Button) findViewById(R.id.btn_implict_intent_broadcast);
btnImplictBroadcast.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(INTENAL_ACTION_1).putExtra(
"person_info", "Potato is so smart!!!");
// (触发Test1BroadCastReceiver,Test1BroadCastReceiver和动态注册的INTENAL_ACTION_1)
sendBroadcast(intent); // 注2
// 只有在manifest.xml中增加了蓝牙权限才能接收 // 注3
// sendBroadcast(intent, BLUETOOTH_PERMISSION);
}
});
// 动态注册broadcastReceiver(就是在代码手动注册,不在xml中注册) // 注4
Button btnMoveBroadcast = (Button) findViewById(R.id.btn_auto_broadcast);
btnMoveBroadcast.setOnClickListener(new OnClickListener() {
// (触发Test1BroadCastReceiver,Test1BroadCastReceiver的INTENAL_ACTION_1)
@Override
public void onClick(View v) {
Intent intent = new Intent(INTENAL_ACTION_2);
// sendBroadcast(intent);
// 只有在manifest.xml中增加了蓝牙权限才能接受到
sendBroadcast(intent, BLUETOOTH_PERMISSION); // 注3
}
});
// 多个broadcast
Button btnMutilDyanimcalBroadcast = (Button) findViewById(R.id.btn_mutil_auto_broadcast);
btnMutilDyanimcalBroadcast.setOnClickListener(new OnClickListener() { // 注5
@Override
public void onClick(View v) {
// 注册多个广播
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);// 系统电量检测信息
filter.addAction(INTENAL_ACTION_3);// 第三组自定义消息
registerReceiver(mBatInfoReceiver, filter);
Intent intent = new Intent(INTENAL_ACTION_3);
intent.putExtra("name", "potato");
// 触发mBatInfoReceiver
sendBroadcast(intent, BLUETOOTH_PERMISSION);// 只有在manifest.xml中增加了蓝牙权限才能接受到
}
});
// 有序的Broadcast
Button btnOrderBroadcast = (Button) findViewById(R.id.btn_order_broadcast);
btnOrderBroadcast.setOnClickListener(new OnClickListener() { // 注7
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(INTENAL_ACTION_1);
intent.putExtra("person_info", "Potato is so smart!!!");
// 触发mBatInfoReceiver
sendOrderedBroadcast(intent, null);// 只有在manifest.xml中增加了蓝牙权限才能接受到
mIsOrderBroadcast = true;
}
});
}
// 在onStart中动态注册广播,当然也可以在onCreate里面注册
@Override
protected void onStart() {
super.onStart();
// 动态注册
IntentFilter intentFilter = new IntentFilter(INTENAL_ACTION_2); // 注4
intentFilter.addAction(INTENAL_ACTION_1);
intentFilter.setPriority(700); // 注7
// 也可以用这种方法动态注册多个,说明我可以”接收“这么多的动态广播。
/*
* IntentFilter intentFilter= new IntentFilter();
* intentFilter.addAction("action1"); intentFilter.addAction("action2");
*/
registerReceiver(mBroadcastIntent, intentFilter);
}
// 在onStop中取消注册广播,如果在onCreate里面注册,那么在onDestroy里面取消注册。
@Override
protected void onStop() {
super.onStop(); // 注4
unregisterReceiver(mBroadcastIntent);
unregisterReceiver(mBatInfoReceiver);
}
// 接收动态注册广播的BroadcastReceiver
private BroadcastReceiver mBroadcastIntent = new BroadcastReceiver() { // 注4
@Override
public void onReceive(Context context, Intent intent) {
// 多个广播
if (intent.getAction().equals("com.potato.INTENT_ACTION_2")) {
Log.d("BroadCastReceiver", "mBroadcastIntent----------INTENT_ACTION_2");
}
if (intent.getAction().equals("com.potato.INTENT_ACTION_1"))
{
Log.d("BroadCastReceiver", "mBroadcastIntent----------INTENT_ACTION_1"+"\n"
+ intent.getStringExtra("person_info"));
if (mIsOrderBroadcast) {
Bundle bundle = new Bundle();
bundle.putString("mBroadcastIntent", "mBroadcastIntent data to second broadcastReceiver");
setResultExtras(bundle);
mIsOrderBroadcast = false;
}
}
}
};
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() { // 注6
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// 如果捕捉到的action是ACTION_BATTERY_CHANGED
if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
// 当未知Intent包含的内容,则需要通过以下方法来列举
StringBuffer strTemp = new StringBuffer();
Bundle b = intent.getExtras();
Object[] lstName = b.keySet().toArray();
for (int i = 0; i < lstName.length; i++) {
String keyName = lstName[i].toString();
strTemp.append(keyName + String.valueOf(b.get(keyName))
+ "\n");
}
Log.d("BroadCastReceiver", "mBatInfoReceiver----------ACTION_BATTERY_CHANGED"+"\n"
+ strTemp);
}
// 如果捕捉到的action是INTENAL_ACTION_3
if (INTENAL_ACTION_3.equals(action)) {
Log.d("BroadCastReceiver", "mBatInfoReceiver----------INTENAL_ACTION_3"+"\n"
+ intent.getStringExtra("name"));
}
}
};
}
没有合适的资源?快使用搜索试试~ 我知道了~
broadcast功能大集合
共29个文件
class:15个
java:4个
png:3个
5星 · 超过95%的资源 需积分: 10 86 下载量 98 浏览量
2011-11-29
11:57:34
上传
评论
收藏 27KB RAR 举报
温馨提示
broadcast; 通过broadcast开机启动service; sendorderedbroadcast; broadcast生命周期; 权限控制启动;
资源推荐
资源详情
资源评论
收起资源包目录
19.BroadcastDemo.rar (29个子文件)
19.BroadcastDemo
AndroidManifest.xml 2KB
res
layout
main.xml 1KB
drawable-ldpi
ic_launcher.png 2KB
drawable-mdpi
ic_launcher.png 3KB
drawable-hdpi
ic_launcher.png 4KB
values
strings.xml 192B
proguard.cfg 1KB
src
com
potato
TestBroadCastReceiver.java 1KB
Test1BroadCastReceiver.java 1KB
BroadcastDemoActivity.java 6KB
bin
classes
com
potato
BroadcastDemoActivity$6.class 1KB
BroadcastDemoActivity$5.class 2KB
BroadcastDemoActivity$3.class 1KB
Test1BroadCastReceiver.class 2KB
BroadcastDemoActivity.class 3KB
R.class 475B
R$layout.class 370B
R$attr.class 316B
R$id.class 515B
R$string.class 403B
BroadcastDemoActivity$2.class 2KB
R$drawable.class 383B
BroadcastDemoActivity$4.class 1KB
TestBroadCastReceiver.class 2KB
BroadcastDemoActivity$1.class 2KB
res
.classpath 364B
assets
project.properties 360B
.project 852B
gen
com
potato
R.java 955B
共 29 条
- 1
资源评论
- zjzbruce2013-06-17还不错, broadcast相关的知识点都用到了。
- xp98022013-03-21还不错, broadcast相关的知识点都用到了。
- wuzhuangmaque2014-05-11太好了,正是我想找的资源,,谢谢
- 火星黑社会老大2013-04-14刚好是我需要的。。。。。。灰常感谢~~~~
- csxiaopengdn2012-06-15这个dome对我有帮助,谢谢!
Fisher3Star
- 粉丝: 49
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功