动态注册广播接收器

  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用法的更多相关文章

  1. Android 四大组件之“ BroadcastReceiver ”

    前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...

  2. Android四大组件之一“广播”

    前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...

  3. 4、android BroadcastReceiver详细用法

    BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播. 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这 ...

  4. BroadcastReceiver的最简单用法

    android系统下的广播: 电池电量低.电池充电完成.短信到来了.程序安装卸载.sd卡卸载安装 等 BrocastReceiverDemo.java public class BrocastRece ...

  5. android中broadcastreceiver的用法-代码中注册

    界面如下:     问题1:点击“解绑广播接收器“后再次点击”解绑广播接收器“后,程序崩溃,log信息如下: 08-04 05:04:35.420: E/AndroidRuntime(5521): F ...

  6. android中broadcastreceiver的用法-manifest中注册。

    package com.jinhoward.broadcast.activity; import com.jinhoward.broadcast.activity.R; import android. ...

  7. android的logcat详细用法

    Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命 令来查看和使用. 使用logcat命令 你可以用 logc ...

  8. 2、android Service 详细用法

    定义一个服务 在项目中定义一个服务,新建一个ServiceTest项目,然后在这个项目中新增一个名为MyService的类,并让它继承自Service,完成后的代码如下所示: ? 1 2 3 4 5 ...

  9. BroadcastReceiver应用详解(转)

    转自: http://blog.csdn.net/liuhe688/article/details/6955668 問渠那得清如許?為有源頭活水來.南宋.朱熹<觀書有感> 据说程序员是最爱 ...

随机推荐

  1. 使用VirtualBox安装Android 4.2.2 x86 .

    http://blog.csdn.net/kunoy/article/details/8768205 virtual box 安装 android x86 不显示鼠标, --> 控制 --> ...

  2. Python基础笔记系列一:基本工具与表达式

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 工具基础(Windows系统下)传送门:Python基础笔记系列四:工具的 ...

  3. No toolchains found in the NDK toolchains folder for ABI with prefix

    通过Android Studio 的Sdk Manager安装NDK,安装完之后编译失败,报错信息如下: No toolchains found in the NDK toolchains folde ...

  4. 【spark】常用转换操作:join

    join就表示内连接. 对于内链接,对于给定的两个输入数据集(k,v1)和(k,v2) 根据相同的k进行连接,最终得到(k,(v1,v2))的数据集. 示例 val arr1 = Array((&qu ...

  5. 软工作业-四则运算(java实现)BY叶湖倩,叶钰羽

    四则运算生成器 BY-信安1班 叶湖倩(3216005170) 信安1班 叶钰羽(3216005171) 1. 项目介绍 源代码GitHub地址:https://github.com/yeyuyu/s ...

  6. 《Java程序员职场全攻略 从小工到专家》 - 书摘精要

    (前言) 学习招式在次,提升内力才是最主要的: (P10) 选择一门编程语言,只是入门的途径.过分依赖编程语言,只会让自己成为代码高手,而不是开发大牛,要知道编程语言只是一种工具,更重要的是编程思想: ...

  7. 发现的好东西——bitset

    先向各位大佬介绍一个水题 任何一个正整数都可以用2的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即a^b 可表示为a(b). 由此可知,137可表示为: 2(7)+2( ...

  8. PostgreSQL日志配置记录

    日志审计  审计是值记录用户的登陆退出以及登陆后在数据库里的行为操作,可以根据安全等级不一样设置不一样级别的审计, 此处涉及的参数文件有: logging_collector      --是否开启日 ...

  9. pgbench使用记录

    1.初始化: pgbench -i pgbench 如果端口号有变化,需要先手动创建数据库,再执行. pgbench -i -s 10 -p 5433 pgbench 重点:主要用到两个参数,-i:初 ...

  10. C++ 资源管理 —— RAII

    RAII:在构造函数中申请资源,在析构函数中释放资源. 1. RAII 自动实现锁资源的释放 void bad() { m.lock(); f(); if (COND) return; m.unloc ...