文档章节

Android 广播BroadCastReceiver

Coding缘
 Coding缘
发布于 2019/03/22 16:09
字数 458
阅读 10
收藏 0

创建一个广播接收器的步骤:

1.创建一个类 extends BroadCastReceiver,重写onReceive()方法

2.注册广播

3.发送广播

context.sendBroadcast(new Intent("action"));        //    广播的频道

 

注册广播的两种方式:

1.全局广播:

注册在清单配置文件,关闭应用后仍在监听

<receiver android:name="全路径">

    <intent-filter>

        <action android:name="xxx"/>        //    可以为全路径的小写

    </intent-filter>

</receiver>

2.动态注册

MainActivity ——> onCreate() {

    IntentFilter filter = new IntentFilter();

    filter.addAction(MY_ACTION);

    receiver = new MyBroadCast();

    registerReceiver(receiver, filter);

}

onDestroy(){        unregisterReceiver(receiver);    }

 

系统广播:

Intent.ACTION_BATTERY_LOW                        低电量提醒广播

Intent.ACTION_BATTERY_CHANGED

Intent.ACTION_BOOT_COMPLETED                开机完成

Intent.ACTION_SHUTDOWN                           关机提醒

Intent.ACTION_SCREEN_OFF                           屏幕关闭

Intent.ACTION_SCREEN_ON

Intent.ACTION_USER_PRESENT                        屏幕解锁

Intent.ACTION_NEW_OUTGOING_CALL            拨号广播

TelephoneManager.ACTION_PHONE_STATE_CHANGED        来电时电话状态改变(如响铃、空置、挂断)

Telephone.Sms.Intent_SMS_RECEIVED_ACTION            接收短信

ConnectivityManager.CONNECTIVITY_ACTION            网络状态改变

 

example:

ConnectivityManager.CONNECTIVITY_ACTION            网络状态改变

onReceive(Context context, Intent intent) {

    ConnectivityManager manager = (ConnectivityManager)context.getSystenService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo networkInfo = manager.getActiveNetworkInfo();

    if(networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnectedOrConnecting()) {

        String name = networkInfo.getTypeName();

    }else {

        context.Toast.makeText(context, "没有网络",Toast.LENTH_LONG).show();

    }

}

 

广播的生命周期短暂:接收到广播时创建,onReceive()方法结束时销毁,不要在广播接收者中做一些耗时或创建子线程耗时操作,应在服务Service中完成

 

有序广播(action一样)

context.sendOrderedBroadcast(intent, 权限str);

1.按照注册顺序

2.按大小        <intent-filter android:property="100">        //    1000最高,-1000最低

3.中断低的广播接收器接收广播

onReceiver() {

    ...

    abortBroadcast();

}

 

广播的安全性:

发送端:

1.指定接收广播的应用包名:

intent.putPackage("com.fgl.test");

2.发送带权限的广播:

定义权限:<permisson android:name = "com.fgl.testsafetypermission"/>

<use-permission android:name = "com.fgl.testsafetypermission"/>

sendBroadcast(intent, "com.fgl.testsafetypermission");

接收端:不接收外部应用的广播        <receiver ... android:exported="false">

 

© 著作权归作者所有

上一篇: Android 通知Notify
下一篇: Android ViewPager
Coding缘
粉丝 0
博文 99
码字总数 46988
作品 0
成都
Android工程师
私信 提问
加载中

评论(0)

Android Service 服务(二)—— BroadcastReceiver

一、 BroadcastReceiver简介 BroadcastReceiver,用于异步接收广播Intent,广播Intent是通过调用Context.sendBroadcast()发送、BroadcastReceiver()接收。 广播Intent的发送是通过调用Conte...

长平狐
2013/01/06
204
0
android广播和短信广播详解----使用广播接收者窃听短信

当系统收到短信时,会发出一个action名称为android.provier.Telephony.SMS_RECEIVED的广播Intent,该Intent存放了接收到的短信内容,使用名称 “pdus”即可从Intent中获取短信内容。 pdus是一...

程序袁_绪龙
2014/09/28
609
0
BroadcastReceiver—简介

Android BroadcastReceiver 简介 在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver 活动(Activity) - 用于表现功能 服务(Service) - 相当于后台运行的 Activity 广播(Br......

zt1212
2012/10/12
228
0
总结全面的广播机制

BroadCastReceiver 源码位于: framework/base/core/java/android.content.BroadcastReceiver.java 广播接收者( BroadcastReceiver )用于接收广播 Intent ,广播 Intent 的发送是通过调用 ......

天高空
2012/03/20
1.8K
1
android 广播接收者--BroadcastReceiver

BroadcastReceiver初识: 广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()来实现的。通常一个广播...

长平狐
2012/09/03
1.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

上海哪里有开住宿费发票

电13564998196 陈生详情-项.目.齐.全 可先开验。-本报讯(劳动报记者陆燕婷)聚焦餐饮行业,58同城招聘研究院昨 发布数据显示,今年上半年,全国餐饮行业招聘需求增长46.18%,平均月薪6387元。...

漂迦徴fp2090
17分钟前
9
0
上海哪里有开住宿费发票

电13564998196 陈生详情-项.目.齐.全 可先开验。-本报讯(劳动报记者陆燕婷)聚焦餐饮行业,58同城招聘研究院昨 发布数据显示,今年上半年,全国餐饮行业招聘需求增长46.18%,平均月薪6387元。...

票迦徴fp2090
17分钟前
11
0
上海哪里有开住宿费发票

电13564998196 陈生幵真嘌 可先幵验。-本报讯(劳动报记者陆燕婷)聚焦餐饮行业,58同城招聘研究院昨 发布数据显示,今年上半年,全国餐饮行业招聘需求增长46.18%,平均月薪6387元。随着餐饮行...

嘌迦徴fp2090
19分钟前
13
0
上海哪里有开住宿费发票

电13564998196 陈生详情-项.目.齐.全 可先开验。-本报讯(劳动报记者陆燕婷)聚焦餐饮行业,58同城招聘研究院昨 发布数据显示,今年上半年,全国餐饮行业招聘需求增长46.18%,平均月薪6387元。...

嘌珈徴fp2090
19分钟前
13
0
上海哪里有开住宿费发票

电13564998196 陈生幵真嘌 可先幵验。-本报讯(劳动报记者陆燕婷)聚焦餐饮行业,58同城招聘研究院昨 发布数据显示,今年上半年,全国餐饮行业招聘需求增长46.18%,平均月薪6387元。随着餐饮行...

票加徴fp2090
21分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部