Andoird 监听开机广播和关机广播
需求:有时候,我们需要自己的程序在开机后自动运行;在关机时,记录一些信息到文件中.
一、开机广播监听
Android系统启动完成后会自动发出启动完成广播(android.intent.action.BOOT_COMPLETED),
所有注册了接收启动完成广播的接收器(BroadcastReceiver)都会收到此广播.
①编写一个继承BroadcastReceiver的类,接受系统启动完成广播.
package com.example.systemtest; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent; /**
* 系统启动完成广播接收器
* #<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
* @author Lone_Wolf
*/
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
//example:启动程序
Intent start = new Intent(context, MainActivity.class);
start.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//
context.startActivity(start);
}
}
}
②在AndroidManifest.xml文件里注册广播接收器.
<receiver android:name="com.example.systemtest.BootCompletedReceiver" >
<intent-filter>
<!-- 开机广播 -->
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
③添加相应权限.
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
二、关机广播监听
与开机广播对应,Android系统在即将关闭时发出系统关闭广播(android.intent.action.ACTION_SHUTDOWN).
①编写一个继承BroadcastReceiver的类,接受系统关闭广播.
package com.example.systemtest; import java.io.File;
import java.io.FileOutputStream; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent; /**
* 系统关闭广播接收器
* @author Lone_Wolf
*/
public class ShutdownReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SHUTDOWN)) {
//example:写入文件
FileOutputStream fos;
try {
fos = new FileOutputStream(
android.os.Environment.getExternalStorageDirectory()
+ File.separator + "SysLog.txt", true);
fos.write("系统退出".getBytes("utf-8"));
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
②在AndroidManifest.xml文件里注册广播接收器.
<receiver android:name="com.example.systemtest.ShutdownReceiver" >
<intent-filter>
<!-- 关机广播 -->
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
</intent-filter>
</receiver>
注: onReceive中代码的执行时间不要超过5s,否则android会弹出超时dialog.
如果需要做耗时处理,可以在onReceive()里开始一个Service,让Service去做耗时处理.
最好不要用子线程,因为BroadcastReceiver的生命周期很短,子线程可能还没有结束BroadcastReceiver就先结束了.
Andoird 监听开机广播和关机广播的更多相关文章
- 【Android】Android 监听apk安装替换卸载广播
[Android]Android 监听apk安装替换卸载广播 首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDE ...
- ndroid如何监听开机广播和关机广播
需求描述:有些时候,我们需要我们的程序在开机后能自动运行,在系统即将关闭时,能写入一些记录到指定的文件里. 一.开机广播监听: Android系统启动完成后会发出启动完成广播(android.inte ...
- android 监听去电实现ip拨号 广播接收者
利用广播实现ip拨号 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- Ubuntu 拦截并监听 power button 的关机消息
system:ubuntu 18.04 platform:rockchip 3399 board:NanoPi M4 前言 物理上的电源按键短按之后,系统直接硬关机了,导致应用程序无法保护现场,就直接 ...
- Android开机广播和关机广播
有些时候我们需要我们的程序在系统开机后能自动运行,这个时候我们可以使用Android中的广播机制,编写一个继承BroadcastReceiver的类,接受系统启动关闭广播.代码如下: /** *@au ...
- Android 监听apk安装替换卸载广播
首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装的包程 ...
- Android——监听开机启动,自启动应用程序
1.首先继承一个broadcastreceiver public class ConnectBroadCastReceiver extends BroadcastReceiver { @Overrid ...
- 为什么监听不到开机广播action.BOOT_COMPLETED
为什么监听不到开机广播action.BOOT_COMPLETED 1. 说明 Android手机开机后,会发送android.intent.action.BOOT_COMPLETED广播,监听这个广播 ...
- Android-应用安装/替换/卸载/广播监听
在上一篇博客Android-开关机的广播,中介绍了,如何订阅接收者,去接收系统发送的开机/关机广播, 而这篇博客是订阅接收者 去接收应用的(安装/替换/卸载) 三种广播 订阅 接收者 去接收 应用的 ...
随机推荐
- 菜鸟成长日记之新手备忘录-IOS开发第一个项目总结
2013年5月3号,开始找IOS开发工作(自学了大半年,做了一个功能不全的Demo,该出去见见世面了!),5月4号面试了第一家公司(是家刚成立一段时间的外包公司),5月5号第一家公司已二轮电话面试,5 ...
- 电商H5制作常使用的排版方式
在很多电商网站或者APP中,经常会出现一些精美夺目的活动宣传海报,吸引着用户点击.购买.如今,电商们可以把海报搬到微信中,做出面向用户群大.传播快的H5制作.那么,制作电商H5制作时可以使用哪三种排版 ...
- continuous integration and continuous deployment in DW/BI
deployment methodIn Redshift1, Deploy process: Drop and Refresh the view, Drop table, Create an empt ...
- Tips--8080端口被占用了怎么办
下面以win7为例: 打开任务管理器 ctrl+alt+. 找到8080端口对应的PID 停止相应PID的进程即可:
- GimageX
{LJ?Dragon}[标题]GimageX 中文版备份恢复工具 如今由微软发布的免费系统部署软件 imageX 则更受到高手们的喜爱,被誉为系统备份/还原的必备新神器.imageX 不仅可用来封装制 ...
- 【Java】Java8新增的Lambda表达式_学习笔记
一.Lambda表达式可以简化创建匿名内部类对象 1.不需要new XXX(){}这种繁琐代码. 2.不需要指出重写的方法名. 3.不要给出重写的方法的返回值类型. 4.Lambda相当于一个匿名方法 ...
- .NET常用的扩展方法整理
using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...
- View获取焦点
<EditText android:id="@+id/et_phoneNum" android:layout_width="match_parent" a ...
- 不可错过的手机APP常见8种界面导航样式
前言:相信每个移动开发project师都会遇到,当一个项目开发启动时,须要考虑搭建怎么的框架.一个好的框架.也会决定着一个APP的前途与命运.框架的风格,如今常见的有八种:标签导航.舵式导航.抽屉导航 ...
- PHP安全编程:会话数据注入 比会话劫持更强大的攻击(转)
一个与会话暴露类似的问题是会话注入.此类攻击是基于你的WEB服务器除了对会话存储目录有读取权限外,还有写入权限.因此,存在着编写一段允许其他用户添加,编辑或删除会话的脚本的可能.下例显示了一个允许用户 ...