动态注册监听网络变化

  • 创建intentFilter 并addAction 代表了监听哪个广播
  • 然后使用registerReceiver()方法 将intentFilter 与 自己创建的监听器 传进去
  • 动态注册的 需要unregisterReciver()
  • 权限需要在Mainfest中声明 <uses-permission android :name "android.permission.ACCESS_NETWORK.STATE"/>

public class MainActivity extends AppCompatActivity {

private IntentFilter intentFilter;

private NetworkChangedReceiver networkChangedReceiver;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

intentFilter = new IntentFilter();

intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

networkChangedReceiver = new NetworkChangedReceiver();

registerReceiver(networkChangedReceiver,intentFilter);

}

@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkChangedReceiver);
}
class NetworkChangedReceiver extends BroadcastReceiver
{
@Override
public void onReceive (Context context,Intent intent)
{
ConnectivityManager connectivityManager =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if(networkInfo!=null && networkInfo.isAvailable())
{
Toast.makeText(context,"good",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(context,"bad",Toast.LENGTH_LONG).show();
} }
}

}

静态注册实现开机启动

  • new-> other->broadcast receiver 手动创建广播
  • exported 允许此广播接收本程序外的广播

之后再Mainfest中声明权限

并说明要监听的广播



<intent -filter>

发送广播

  • Intent intent = new Intent("com....")

  • sendBroadcast(intent);

  • sendOrderedBroadcast(intent,null); 发送有序广播

  • //设置广播优先级

  • abortBroadcast() 截断广播

本地广播

public class MainActivity extends AppCompatActivity {

private IntentFilter intentFilter;

private LocalReceiver localReceiver;

private LocalBroadcastManager localBroadcastManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //得到本地广播管理器的实例
localBroadcastManager = LocalBroadcastManager.getInstance(this); //动态注册本地广播接收器
intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");
localReceiver = new LocalReceiver();
localBroadcastManager.registerReceiver(localReceiver, intentFilter); //发送本地广播
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");
localBroadcastManager.sendBroadcast(intent);
}
});
} @Override
protected void onDestroy() {
super.onDestroy(); //取消动态网络变化广播接收器的注册
localBroadcastManager.unregisterReceiver(localReceiver);
} class LocalReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received local broadcast", Toast.LENGTH_SHORT).show();
}
}

}

Android Studio 学习(三) 广播的更多相关文章

  1. Android Studio 学习 - 基本控件的使用;Intent初学

    Android Studio学习第三天. 今天主要学习 1. RadioButton.CheckBox.RatingBar.SeekBar等基础控件的使用. 结合Delphi中相类似的控件,在这些基本 ...

  2. Android JNI学习(三)——Java与Native相互调用

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  3. Android Studio 学习笔记(一)环境搭建、文件目录等相关说明

    Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...

  4. Android Studio 学习笔记(三):简单控件及实例

    控件.组件.插件概念区分 说到控件,就不得不区分一些概念. 控件(Control):编程中用到的部件 组件(Component):软件的组成部分 插件(plugin): 应用程序中已经预留接口的组件 ...

  5. Android Studio 学习笔记(四):Adapter和RecyclerView说明

    在现版本中,滚动控件有多种,而相比于ListView,GridView,RecyclerView的用途更广,因此将前两者作为Adapter适配器的引入,再对RecyclerView进行简单讲解. MV ...

  6. Android开发学习—— Broadcast广播接收者

    现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息.Android中:系统在运行过程中,会产生许多事件,那么某些事件产生时,比如:电量改变.收发短信.拨打电话.屏 ...

  7. Android Studio学习笔记

    转:http://stormzhang.com/devtools/2014/11/25/android-studio-tutorial1 背景 相信大家对Android Studio已经不陌生了,An ...

  8. Android Studio 学习 - HelloWorld

    今天是学习Android Studio的第2天,加油! 1. 首先要记录下使用Android Studio的一个代码自动完成的功能.平常基本上用Delphi,乍一换工具,各种不习惯,或者说不熟悉.按照 ...

  9. Android Studio 学习 - 程序安装

    痛定思痛,从今天开始专心学习AndriodStudio.希望以此为契机,把Java学扎实.更希望自己能坚持下去,不要半途而废. 记录一些日常的工作以及碰到的问题,权当勉励自己.荀子曰:吾尝终日而思矣, ...

  10. android studio 学习之一 安装和基本使用

    一.简介 Android Studio 是一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开 ...

随机推荐

  1. 【腾讯Bugly干货分享】经典随机Crash之一:线程安全

    本文作者:鲁可--腾讯SNG专项测试组 测试工程师 背景 Android QQ 在2016下半年连着好几个版本二灰 Crash 率都很高,如果说有新需求,一灰的 Crash 率高,还能找点理由,可是开 ...

  2. MySQL--自增列学习

    ##=====================================================================================## 在数据库表设计中会纠 ...

  3. Redis安装和实际应用

    上次介绍了Redis的来龙去脉以及相关一些情况,点击回顾<深入浅出Redis>,接下来我们再讲讲Redis的安装和实际应用. 一.Redis的安装 下载安装包,redis-3.2.9.ta ...

  4. MngoDb MongoClientOptions 配置信息及常用配置信息

    MongoClientOptions.Builder addClusterListener(ClusterListener clusterListener)Adds the given cluster ...

  5. ASP.NET Core 2.1中基于角色的授权

    ASP.NET Core 2.1中基于角色的授权 授权是来描述用户能够做什么的过程.例如,只允许管理员用户可以在电脑上进行软件的安装以及卸载.而非管理员用户只能使用软件而不能进行软件的安装以及卸载.它 ...

  6. 【jQuery】(2)---Jquery过滤选择器

                         1.基础选择器: 名称 说明 举例 #id 根据元素Id选择 $("divId") 选择ID为divId的元素 element 根据元素的 ...

  7. .Net 并发写入文件的多种方式

    1.简介 本文主要演示日常开发中利用多线程写入文件存在的问题,以及解决方案,本文使用最常用的日志案例! 2.使用File.AppendAllText写入日志 这是种常规的做法,通过File定位到日志文 ...

  8. PHP取得json前面有乱码(去除文件头部BOM)

    curl请求接口时,返回结果如下: {} 想把json转换成数组或者对象,但是用json_decode返回是空的,然后用var_dump打印了一下返回结果,发现结果如下: ) 发现前面多了两个字符,因 ...

  9. 剑指offer--2

    前言:继续笔记分享! 面试题6:暂无好的解决方法先搁浅一下 面试题7: #include<stdio.h> #include<stdlib.h> typedef struct ...

  10. kafka和storm集群的环境安装

    前言 storm和kafka集群安装是没有必然联系的,我将这两个写在一起,是因为他们都是由zookeeper进行管理的,也都依赖于JDK的环境,为了不重复再写一遍配置,所以我将这两个写在一起.若只需一 ...