BroadcastReceiver用法
动态注册广播接收器
1、创建一个Receiver继承BroadcastReceiver,并重写onReceiver()
2、在Activity的OnCreate()中添加广播接收器想要接收的action
3、注册广播接收器,调用registerReceiver(Receiver实例,intentFilter)
4、在OnDestroy()中取消注册,unregisterReceiver(Receiver实例)
public class MainActivity extends AppCompatActivity{
private InterFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.com.CONNECTIVITY_CHANGE"); //通过intentFilter对象,添加广播接收器要监听的Action
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver,intentFilter); //注册广播接收器
}
@Override
protected void onDestory(){
super.onDestory();
unregisterReceiver(networkChangeReceiver); //取消注册
}
class NetworkChangeReceiver extends BroadcastReceiver{
@Override
public void onReceiver(Context context,Intent intent){
ConnectivityManager connectionManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
//判断当前是否有网络
if(networkInfo != null && networkInfo.isAvailable()){
//处理逻辑
}else{
//处理逻辑
}
}
}
}
访问系统网络状态需要在Androidmanifest.xml中声明权限:
<use-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
静态注册广播接收器
1、创建一个Receiver类,继承BroadcastReceiver
2、在AndroidMainfest.xml中注册
......
<use-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
......
<receiver
android:name=".BootCompleteReceiver"
android:enabled="true"
android:exported="true"
</receiver>
</application>
......
3、如果需要发送携带action的广播,还需在<receiver>中加入<intent-filter>并在其中加入<action>
<receiver
......
<intent-filter>
<action android:name="......" />
</intent-filter>
</recevier>
发送自定义广播
1、发送标准广播
(1)定义一个广播接收器接收此广播。
(2)在AndroidManifest.xml中注册,并设置action
(3)在Activity中添加控件,并设置监听器。
(4)在点击事件中,通过Intent传入action
(5)发送广播,sendBroadcast(intent)
2、发送标准广播
步骤和标准广播基本一致,在点击事件中sendOrderedBroadcast(intent,null) //二参:与权限相关的字符串
在<intent-filter>中设置优先级:<intent-filter android:priority="100">
截断广播:在广播接收器中onRecevier()里添加 abortBroadcast()
本地广播
1、创建一个LocalBroadcastManager管理广播,获取实例:LocalBroadcastManager.getInstance(this);
2、发送广播:localBroadcastManager.sendBroadcast(intent);
3、注册广播:localBroadcast.registerReceiver(localReceiver,intentFilter);
4、取消注册:localbBroadcastManager.unregisterReceiver(localReceiver);
BroadcastReceiver用法的更多相关文章
- Android 四大组件之“ BroadcastReceiver ”
前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...
- Android四大组件之一“广播”
前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...
- 4、android BroadcastReceiver详细用法
BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播. 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这 ...
- BroadcastReceiver的最简单用法
android系统下的广播: 电池电量低.电池充电完成.短信到来了.程序安装卸载.sd卡卸载安装 等 BrocastReceiverDemo.java public class BrocastRece ...
- android中broadcastreceiver的用法-代码中注册
界面如下: 问题1:点击“解绑广播接收器“后再次点击”解绑广播接收器“后,程序崩溃,log信息如下: 08-04 05:04:35.420: E/AndroidRuntime(5521): F ...
- android中broadcastreceiver的用法-manifest中注册。
package com.jinhoward.broadcast.activity; import com.jinhoward.broadcast.activity.R; import android. ...
- android的logcat详细用法
Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命 令来查看和使用. 使用logcat命令 你可以用 logc ...
- 2、android Service 详细用法
定义一个服务 在项目中定义一个服务,新建一个ServiceTest项目,然后在这个项目中新增一个名为MyService的类,并让它继承自Service,完成后的代码如下所示: ? 1 2 3 4 5 ...
- BroadcastReceiver应用详解(转)
转自: http://blog.csdn.net/liuhe688/article/details/6955668 問渠那得清如許?為有源頭活水來.南宋.朱熹<觀書有感> 据说程序员是最爱 ...
随机推荐
- java 枚举类型 enum
在java SE5中添加了枚举类型,即enum关键字.在这之前,当你需要创建一个整形常量集时,但是这些枚举值并不会必然的将其自身的取值限制在这个常量集的范围之内,因此这样做的显得不安全,也不方便使用. ...
- LeetCode第[53]题(Java):Maximum Subarray
题目:和最大的子序列 难度:Medium 题目内容: Given an integer array nums, find the contiguous subarray (containing at ...
- Linux grep 命令大全
grep: 用于模糊查找,在标准输入或者文件中 格式: grep [选项参数]... PATTERN |FILE ... 选项参数说明: -E, --extended-regexp PATTERN ...
- shell基础复习笔记
变量的设置 以等号连接,等号两边不能有空格 变量名首个字符必须是英文,可以使用下划线,不能使用标点符号,不能使用bash里的关键字 可以使用转义字符\将特殊符号(如Enter.$.空格.!等)变成一般 ...
- mybatis 批量修改接口的几种实现方式
-----------------我也是有上线的--------------我也是有上线的------------我也是有上线的---------------我也是有上线的-------------- ...
- dga2
0e527eaf_5ec5_4623_9fe9_e459583acd72.com0fmgm1cuu7h1279dghgka0ltg.com0ydlanpuh4e2wl9h6udk6.com10uz8k ...
- 【Wannafly挑战赛9-B】数一数
链接:https://www.nowcoder.net/acm/contest/71/B 题目就不贴了.. 设res[i]为第i行的最终结果,可以想到,res[i]为0或不为0.长度不是最短的字符串r ...
- C++中关于标准输出流cout中使用递增运算符的问题
今天听同学提起一个问题,在C++中运行下面的语句会得到什么结果: ; cout << a++ << a++ << a++; 起初我个人想当然地认为会输出012,然而 ...
- what is out of band mode.
Most of the steps are the same, except instead of sending an URL as the oauth_callback to request_to ...
- linux 段错误常见处理方法
1.如果没有产生core文件,可以查询系统log 通过 sudo cat /var/log/messages |grep segfault 或者 sudo dmesg|grep segfault 获得 ...