Android入门第48天-静态BroadCast之接受开机广播
source link: https://blog.csdn.net/lifetragedy/article/details/128330754
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Android入门第48天-静态BroadCast之接受开机广播
我们在之前的BroadCast章节中写了动态BroadCast。但我们提过一笔BroadCast也有静态之分,而静态的BroadCast主要用于监听一些如:开机广播、SIM卡拨出插入等广播。这些广播都为静态注册广播事件。因此我们今天就以一个App监听Android开机广播为例子说明静态广播的使用方法以及如何收听开机广播。
- 进一步使用Android Stduio如何模拟开机、关机;
- 了解AVD的冷启动、快速启动模式;
- 静态广播的写法;
- 开机广播的处理以及相应的权限-permission;
网上几乎所有的例子都没有讲清这个开机广播,Android的开机广播事件叫“android.intent.action.BOOT_COMPLETED”,为了Receive它你必须在全局的AndroidManifest里加入至少以下两个Permission。
同时,你不能只是简单按下Android Studio模拟器里的这个按钮
设计一个静态Receiver
我们设计一个自己的Receiver。
把这段xml放置于AndroidManifest.xml文件中并且设置相应的uses:permission,全设完后的AndroidManifest.xml文件如下
AndroidManifest.xml
此处和网上到处乱抄甚至机器翻译的混乱的知识库有3处区别:
- 区别1:我们在uses:permission还要加入android.permission.WAKE_LOCK;
- 区别2:在receiver中需要指定全包路径而不是.BootCompleteReceiver这样的简写;
- 区别3:在receiver标签内还需要设android:permission;
下面来书写BootCompleteReceiver类
BootCompleteReceiver类
非常简单,只要监听到了手机开机,它就会打印一条LOG。
activiti_main.xml
Android Studio在new->empty activity时默认的hello world
MainActivity.java
Android Studio在new->empty activity时默认的hello world
如何运行看效果
网上又是一堆错的。
第一步操作:设置AVD高级模式
按照下图:
第二步操作:设置app开机模式为Cold boot模式
然后在下拉出的“Show Advanced Settings”里
把默认启动方式如果是“Quick boot”,那么请把它改成“Cold boot”。因为Quick boot是自动记录上一次手机的运行状态,它不能模拟真机的开关机。这个BOOT_COMPLETE事件就是在真正的关机开机时才发生的,举例来说,我长按着Android手机的顶部按钮10秒后卡断电源这样的关机后再开机才能触发这个BOOT_COMPLETE事件,而且只能触发一次。
如果只是短按一下手机顶部按钮->黑屏->再短按一下手机顶部按钮->亮屏,这种叫Quick boot,这种是不能触发BOOT_COMPLETE事件的。
因此网上的教程都没有说透这一个点,导致我们的初学者不知道配了多少个uses:permission、试了无数次就是无法触发这个BOOT_COMPLETE事件并浪费了大量的时间只为了触发一下这个事件的效果。
第三步操作:在AVD“已启动”模式下进行强制关机开机
你可以先把应用连同AVD先启动起来如下图,以下这样的状态就是AVD已启动模式。
用鼠标长按“开关”按钮直到出现以下第二个界面
点Restart按钮,出现以下界面
然后你要等一会,大概在15-30秒不等,然后你会得到这样的界面
最后在这个过渡界面再过2-3秒后,Android充分开机后你就可以收到以下这条消息了。
这就是Android真正的“开机收到开机广播”,网上教程统统没说清。每次你要触发这个“开机”事件,你可以每次在AVD已启动情况下点【Restart】按钮,这样才能每次触发和验证你要在开机事件被你安装在手机的APP监听到时才要去做的一些事
请自己动一下手吧。
Recommend
-
13
原文链接: Android总结篇系列:Android广播机制 1. Android广播机制概述Android广播分为两个方面:广播发送...
-
9
Android Broadcast广播机制分析 基于Android 6.0的源码剖析, 分析android广播的发送与接收流程。 广播(Broadcast)机制用于进程/线程间通信,广播分为广播发送和广播接收两个过程,其中广播接收者BroadcastReceiver便是A...
-
4
Android应用可以通过广播从系统或其他App接收或发送消息。类似于订阅-发布设计模式。当某些事件发生时,可以发出广播。 系统在某些状态改变时会发出广播,例如开机、充电。App也可发送自定义广播。广播可用于应用间的通讯,是IPC的一种方式。广播的种类...
-
6
静态广播发送流程分析 原创 上篇文章分析的是动态广播(NR>0因为是在动态regist的时候会把bf...
-
7
Android入门第9天-Android读本地JSON文件并显示_TGITCIC的博客-CSDN博客 Android在大都情况会取得后台Service返回的json数据来做前端展示。那么Android是如何处...
-
4
Android入门第10天-Android访问远程Spring Boot提供的Restful API接口 ...
-
7
Android入门第8天-几个Layout混用完成常用手机商城首页下部有3个按钮的设置 ...
-
3
BroadCast是什么 BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段, 系统自己在很多时候都会发送广播,比如电量低或者充足,...
-
6
上一篇我们讲了简单的动态BroadCast,今天我们通过手工来发送一条BroadCast进一步来了解BroadCast。 在上一篇里我们使用BroadCast监听网络状态,今天我们...
-
2
Android入门第46天-使用BroadCast来模拟异地登录事件发生后的主动退出另一个设备重登录 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK