【Android】安卓学习笔记之广播(二)静态注册实现开机启动
来源:互联网 发布:零售业软件 编辑:程序博客网 时间:2024/05/20 06:50
动态注册的广播接收器可以自由地控制注册与注销,在灵活性方面有很大的优势,但是它也存在着一个缺点,即必须要在程序启动之后才能接收到广播,因为注册的逻辑是写在onCreate()方法中的。那么有没有什么办法可以让程序在未启动的情况下就能接收到广播呢?这就需要使用静态注册的方式了。
这里我们准备让程序接收一条开机广播,当收到这条广播时就可以在onReceive()方法里执行相应的逻辑,从而实现开机启动的功能。新建一个BootCompleteReceiver 继承自
可以看到,这里不再使用内部类的方式来定义广播接收器,因为稍后我们需要在AndroidManifest.xml 中将这个广播接收器的类名注册进去。在onReceive()方法中,还是简单
地使用Toast 弹出一段提示信息。
然后修改AndroidManifest.xml 文件,代码如下所示:
另外,监听系统开机广播也是需要声明权限的,可以看到,我们使用<uses-permission>标签又加入了一条android.permission.RECEIVE_BOOT_COMPLETED 权限。
现在重新运行程序后,我们的程序就已经可以接收开机广播了,首先打开到应用程序管理界面来查看一下当前程序所拥有的权限。在桌面按下Menu 键→System settings→Apps,然后点击BroadcastTest,如图所示。
这里我们准备让程序接收一条开机广播,当收到这条广播时就可以在onReceive()方法里执行相应的逻辑,从而实现开机启动的功能。新建一个BootCompleteReceiver 继承自
BroadcastReceiver,代码如下所示:
public class BootCompleteReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "Boot Complete", Toast.LENGTH_LONG).show();}}
可以看到,这里不再使用内部类的方式来定义广播接收器,因为稍后我们需要在AndroidManifest.xml 中将这个广播接收器的类名注册进去。在onReceive()方法中,还是简单
地使用Toast 弹出一段提示信息。
然后修改AndroidManifest.xml 文件,代码如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.broadcasttest" android:versionCode="1" android:versionName="1.0" > <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >…… <receiver android:name=".BootCompleteReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application></manifest>终于,<application>标签内出现了一个新的标签<receiver>,所有静态注册的广播接收器都是在这里进行注册的。它的用法其实和<activity>标签非常相似,首先通过android:name来指定具体注册哪一个广播接收器,然后在<intent-filter>标签里加入想要接收的广播就行了,由于Android 系统启动完成后会发出一条值为android.intent.action.BOOT_COMPLETED 的广播,因此我们在这里添加了相应的action。
另外,监听系统开机广播也是需要声明权限的,可以看到,我们使用<uses-permission>标签又加入了一条android.permission.RECEIVE_BOOT_COMPLETED 权限。
现在重新运行程序后,我们的程序就已经可以接收开机广播了,首先打开到应用程序管理界面来查看一下当前程序所拥有的权限。在桌面按下Menu 键→System settings→Apps,然后点击BroadcastTest,如图所示。
可以看到,我们的程序目前拥有访问网络状态和开机自动启动的权限。然后将模拟器关闭并重新启动,在启动完成之后就会收到开机广播了。
0 0
- 【Android】安卓学习笔记之广播(二)静态注册实现开机启动
- Android之广播二(静态注册实现开机启动)
- android广播:静态注册实现开机启动(第一行代码android学习)
- 【Android】安卓学习笔记之广播(一)动态注册监听网络变化
- Android开发之静态注册实现开机启动
- 安卓开发之注册静态广播
- Android学习笔记---接收系统开机广播实现自启动
- 1min了解广播(2)-静态注册实现开机启动
- 【Android】安卓学习笔记之广播(三)发送标准广播和有序广播
- 静态注册实现开机启动
- 静态注册实现开机启动
- android开机启动无界面后台程序 (安卓开机会发送一个系统广播)
- 【Android】安卓学习笔记之广播(四)使用本地广播
- [Android新手学习笔记29]-Broadcast-例二广播实习开机自启动
- Android广播之注册广播(包括静态广播和动态广播的注册)源码分析
- 学习小记--android静态注册广播接收器之惑--6.6
- Android之广播机制—静态注册
- Android通过Broadcast(广播)实现开机自启动
- HTTP协议详解(真的很经典)
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- JAVA学习记录 -- 数据类型
- 自定义实现Map
- php curl参数详解之post方法
- 【Android】安卓学习笔记之广播(二)静态注册实现开机启动
- Ubuntu使用ppa源安装最新版git
- PEP 8 代码规范
- JAVA学习记录 -- final和static
- STM32工程建立
- 组合算法(C语言+回溯)
- Android Studio在类中找不到R文件
- Java并发编程:Thread类的使用
- 【慕课笔记】第三章 JAVA中必须了解的常用类 第5节 Calendar类的应用