Android基础——四大组件之BroadcastReceiver
按照顺序来,第二个是广播接收者BroadcastReceiver.
BroadcastReceiver
1.Xmind
2. 注册方式
这些还是有必要具体讲一讲的
静态注册
AndroidManifest.xml:<receiver android:name="blog.broadcastReciver.01Test "> <intent-filter> <action android:name="android.intent.action.MEDIA_UNMOUNTED"/> <data android:scheme="unmounted"></data> </intent-filter> </receiver>
动态注册
在Java代码中注册:public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);IntentFilter intentFilter = new IntentFilter("android.intent.action.MEDIA_UNMOUNTED");intentFilter.addDataScheme("unmounted");registerReceiver(new SDCardUnmountedReceiver(), intentFilter);} }
上面两个方法添加的事件都是media是否挂再,media在这里是外部储存的意思,所以验证方式也是在设置中移除sdcard就能收到这样的广播了。
- 注意事项
- 在AndroidManifest.xml中注册的广播接收者在应用运行一次之后就会被注册到系统里了,以后不需要在运行这个广播接收者也能够接收到广播了。
- 动态注册的优先级会高于静态注册,但是动态注册的却不能像静态注册那样一次运行就被添加入系统当中,他会跟随Activity的生命周期,Activity销毁时,它也会一并被销毁。
- 无论静态注册还是动态注册,都需要在清单文件中添加需要的权限。
3.自定义广播
来个例子吧.
先是创建一个发送自定义广播的。
创建一个布局文件添加一个按钮:
<Buttonandroid:id="@+id/send"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="发送广播" />
为主活动实现OnClickListener接口,添加点击监听:
findViewById(R.id.send).setOnClickListener(this);
覆写onClick方法
@Override public void onClick(View view){Intent intent_normal = new Intent();intent_normal.setAction("sendBroadcast.Action.NormalBroadcast");intent_normal.putExtra("data", "send Normal Broadcast");Log.d("tag", "normalBroadcast");sendBroadcast(intent_normal); }
创建一个接受自定义广播的。
用来接受自定义广播的应用。
创建类继承BroadcastReceiver
public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String data = intent.getStringExtra("data");Toast.makeText(context, "receive data:"+data, Toast.LENGTH_SHORT).show();Log.d("tag", "receive data:"+data);} }
- 在清单文件中注册
<receiver android:name=".MyReceiver"><intent-filter><action android:name="sendBroadcast.Action.OrderedBroadcast"/></intent-filter></receiver>
之后运行两个应用,在按下发送端的按键时,接收端能够接收到其数据。而这个事件是我们自己自定义的,只需要两个应用间事件名相同,就能够匹配。
4.广播大全
最后来个资源,Android的广播大全。
android.provider.Telephony.SMS_RECEIVED
—–系统收到短信时发送的广播android.net.conn.CONNECTIVITY_CHANGE
—–网络状态改变Intent.ACTION_AIRPLANE_MODE_CHANGED;
——封闭或打开飞行模式时的广播Intent.ACTION_BATTERY_CHANGED;
——充电状况,或者电池的电量产生变更
——电池的充电状况、电荷级别改变,不克不及经由过程组建声明接管这个广播,只有经由过程Context.registerReceiver()注册Intent.ACTION_BATTERY_LOW;
——默示电池电量低Intent.ACTION_BATTERY_OKAY;
——默示电池电量充沛,即从电池电量低变更到饱满时会发出广播Intent.ACTION_BOOT_COMPLETED;
——在开机启动完成后,这个动作被广播一次(只有一次)。Intent.ACTION_CAMERA_BUTTON;
——按下拍照时的摄影按键(硬件按键)时发出的广播Intent.ACTION_CLOSE_SYSTEM_DIALOGS;
——当屏幕超时进行锁屏时,当用户按下电源按钮,长按或短按(不管有没跳出话框),进行锁屏时,android体系都邑广播此Action消息Intent.ACTION_CONFIGURATION_CHANGED;
——设备当前设置被改变时发出的广播(包含的改变:界面说话,设备标的目标,等,请参考Configuration.java)Intent.ACTION_DATE_CHANGED;
——设备日期产生改变时会发出此广播Intent.ACTION_DEVICE_STORAGE_LOW;
——设备内存不足时发出的广播,此广播只能由体系应用,其它APP不成用?Intent.ACTION_DEVICE_STORAGE_OK;
——设备内存从不足到充沛时发出的广播,此广播只能由体系应用,其它APP不成用?Intent.ACTION_DOCK_EVENT;
——发出此广播的处所frameworks\base\services\java\com\android\server\DockObserver.javaIntent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE;
——移动APP完成之后,发出的广播(移动是指:APP2SD)Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE;
——正在移动APP时,发出的广播(移动是指:APP2SD)Intent.ACTION_GTALK_SERVICE_CONNECTED;
——Gtalk已建树连接时发出的广播Intent.ACTION_GTALK_SERVICE_DISCONNECTED;
——Gtalk已断开连接时发出的广播Intent.ACTION_HEADSET_PLUG;
——在耳机口上插入耳机时发出的广播Intent.ACTION_INPUT_METHOD_CHANGED;
——改变输入法时发出的广播Intent.ACTION_LOCALE_CHANGED;
——设备当前区域设置已更改时发出的广播Intent.ACTION_MEDIA_BAD_REMOVAL;
——未正确移除SD卡(正确移除SD卡的办法:设置–SD卡和设备内存–卸载SD卡),但已把SD卡取出来时发出的广播
——广播:扩大介质(扩大卡)已经从 SD 卡插槽拔出,然则挂载点 (mount point) 还没解除 (unmount)Intent.ACTION_MEDIA_BUTTON;
——按下”Media Button” 按键时发出的广播,假如有”Media Button” 按键的话(硬件按键)Intent.ACTION_MEDIA_CHECKING;
——插入外部储存装配,比如SD卡时,体系会查验SD卡,此时发出的广播?Intent.ACTION_MEDIA_EJECT;
——已拔掉外部大容量储存设备发出的广播(比如SD卡,或移动硬盘),不管有没有正确卸载都邑发出此广播?
——广播:用户想要移除扩大介质(拔掉扩大卡)。Intent.ACTION_MEDIA_MOUNTED;
——插入SD卡并且已正确安装(辨认)时发出的广播
——广播:扩大介质被插入,并且已经被挂载。Intent.ACTION_MEDIA_REMOVED;
——外部储存设备已被移除,不管有没正确卸载,都邑发出此广播?
—— 广播:扩大介质被移除。Intent.ACTION_MEDIA_SCANNER_FINISHED;
——广播:已经扫描完介质的一个目次Intent.ACTION_MEDIA_SCANNER_STARTED;
——广播:开端扫描介质的一个目次Intent.ACTION_MEDIA_SHARED;
—— 广播:扩大介质的挂载被解除 (unmount),因为它已经作为 USB 大容量存储被共享。Intent.ACTION_MEDIA_UNMOUNTED
—— 广播:扩大介质存在,然则还没有被挂载 (mount)。Intent.ACTION_NEW_OUTGOING_CALL;
—— 拨打电话广播Intent.ACTION_PACKAGE_ADDED;
——成功的安装APK之后
——广播:设备上新安装了一个应用法度包。
——一个新应用包已经安装在设备上,数据包含包名(最新安装的包法度不克不及接管到这个广播)Intent.ACTION_PACKAGE_CHANGED;
——一个已存在的应用法度包已经改变,包含包名Intent.ACTION_PACKAGE_DATA_CLEARED;
——清除一个应用法度的数据时发出的广播(在设置--应用经管--选中某个应用,之后点清除数据时?)
——用户已经清除一个包的数据,包含包名(清除包法度不克不及接管到这个广播)Intent.ACTION_PACKAGE_INSTALL;
——触发一个下载并且完成安装时发出的广播,比如在电子市场里下载应用?
——Intent.ACTION_PACKAGE_REMOVED;
——成功的删除某个APK之后发出的广播
——一个已存在的应用法度包已经从设备上移除,包含包名(正在被安装的包法度不克不及接管到这个广播)Intent.ACTION_PACKAGE_REPLACED;
——调换一个现有的安装包时发出的广播(不管如今安装的APP比之前的新还是旧,都邑发出此广播?)Intent.ACTION_PACKAGE_RESTARTED;
——用户从头开端一个包,包的所有过程将被杀死,所有与其接洽的运行时候状况应当被移除,包含包名(从头开端包法度不克不及接管到这个广播)Intent.ACTION_POWER_CONNECTED;
——插上外部电源时发出的广播Intent.ACTION_POWER_DISCONNECTED;
——已断开外部电源连接时发出的广播Intent.ACTION_REBOOT;
——重启设备时的广播Intent.ACTION_SCREEN_OFF;
——屏幕被封闭之后的广播Intent.ACTION_SCREEN_ON;
——屏幕被打开之后的广播Intent.ACTION_SHUTDOWN;
——封闭体系时发出的广播Intent.ACTION_TIMEZONE_CHANGED;
——时区产生改变时发出的广播Intent.ACTION_TIME_CHANGED;
——时候被设置时发出的广播Intent.ACTION_TIME_TICK;
——广播:当前时候已经变更(正常的时候流逝)。
——当前时候改变,每分钟都发送,不克不及经由过程组件声明来接管,只有经由过程Context.registerReceiver()办法来注册Intent.ACTION_UID_REMOVED;
——一个用户ID已经从体系中移除发出的广播Intent.ACTION_UMS_CONNECTED;
——设备已进入USB大容量储存状况时发出的广播?Intent.ACTION_UMS_DISCONNECTED;
——设备已从USB大容量储存状况转为正常状况时发出的广播?Intent.ACTION_WALLPAPER_CHANGED;
——设备墙纸已改变时发出的广播
广播接收者内容较少,整理的比较快。
未完待续。。。
Android基础——四大组件之BroadcastReceiver相关推荐
- Android基础——四大组件之Activity
这几天继续回顾了一些Android基础方面的知识,今天跟大家一起回顾下Android四大组件中的Activity.虽然很基础,但工欲善其事,必先利其器.我们只有打好夯实的基础,才能在技术开发这条道路上 ...
- Android基础四大组件详解
Android四大组件详解 博主接触Android开发将近一年,从最初的JavaSE开始,到Android基础,一直学的糊糊涂涂,最近想整理一番 android基础, 顺便把自己的学习开发经验分享给大 ...
- Android基础四大组件之Activity的启动过程源码解析
前言 Activity是Android中一个很重要的概念,堪称四大组件之首,关于Activity有很多内容,比如生命周期和启动Flags,这二者想要说清楚,恐怕又要写两篇长文,更何况分析它们的源码呢. ...
- Android之四大组件之一-BroadcastReceiver的使用(二)
一,广播接收器的静态注册 <!-- 静态注册 --> <receiver android:name=".FirstReceiver"> ...
- Android 之 四大组件、六大布局、五大存储
Android 之四大组件.六大布局.五大存储:https://blog.csdn.net/shenggaofei/article/details/52450668 Android 四大组件.五大存储 ...
- Android深入四大组件(八)广播的注册、发送和接收过程
前言 我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册.接收和发送过程.建议阅读此文前请先阅读Android深入理解四大组件系列的文章,知识重复的部分, ...
- Android的四大组件
Android的四大组件:Activity.Service.BroadcastReceiver.Content Provider. Content Provider 属于Android应用程序的组件之 ...
- Android 的四大组件
目录 1.Activity 2.Service与intentService 3.LocalBroadcastManager的BroadcastReceiver 4.ContentProvider Ac ...
- Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。然后重点提到Acti
Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity.Service.BroadcastReceiver.ContentProvider.然后重点提到Activi ...
最新文章
- ubuntu 系统下安装 xlwt
- usaco Cowxor (trie 树)
- 结构体重定义冲突_有意减脂、调整饮食,体重却增加了?
- 如何绘制深度学习-目标检测评估指标P-R(precision-recall)曲线?如何计算AP(average-precision)?
- Django Channels 入门指南
- CodeForces 14E Camels :利用1-4拼成长为n的序列,使准确含有t个峰t-1个谷,求方案数 :dp...
- perl one line
- Qt creator5.7 OpenCV249之形态学处理(含源码下载)
- 【UOJ 50】树状数组2
- java 动态规划求最短路径_使用分支界定和动态规划解决最短路径问题(原)
- Js屏蔽键盘输入的某些字符,用以部分代替正则表达式
- 操作系统源代码_计算机自制操作系统(八):仿生DOS操作系统源代码
- 输出结果为16的python表达式_第一周作业(rayco)
- DOS命令和linux
- 如何在ppt中插入pyecharts生成的html图表(及可能的报错解决方法)
- 苹果手机应用分身_云手机应用多开app推荐 好用的多开分身软件
- 【数据结构Python描述】跳跃表简介及使用跳跃表实现有序映射
- 在北京,有房有车的中年男女最好欺负
- 【MMDetection3D】环境搭建,使用PointPillers训练测试可视化KITTI数据集
- 正则表达式(正负数,保留两位小数)
热门文章
- java stream toarray_java8 stream接口 终端操作 toArray操作
- [383]python unicodedata用法
- 如何在虚拟主机上部署java项目_如何在购买的虚拟主机上部署java项目
- 从零开始搭建一台深度学习服务器及环境配置
- C调java_ffmpeg系统学习视频9-5 C调Java的方法.mp4
- 解决 重定向次数过多 尝试清除cookie 的问题
- JAVA开发(Spring框架详解)
- python pdf删除图片_如何使用Python从PDF中删除文本
- Hybrid端口配置实例
- Kubernetes在智联招聘内网的应用场景