Andoird 监听开机广播和关机广播

需求:有时候,我们需要自己的程序在开机后自动运行;在关机时,记录一些信息到文件中.

一、开机广播监听
Android系统启动完成后会自动发出启动完成广播(android.intent.action.BOOT_COMPLETED),
所有注册了接收启动完成广播的接收器(BroadcastReceiver)都会收到此广播.

①编写一个继承BroadcastReceiver的类,接受系统启动完成广播.

 1 package com.example.systemtest;
 2
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6
 7 /**
 8  * 系统启动完成广播接收器
 9  * #<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
10  * @author Lone_Wolf
11  */
12 public class BootCompletedReceiver extends BroadcastReceiver {
13     @Override
14     public void onReceive(Context context, Intent intent) {
15         if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
16             //example:启动程序
17             Intent start = new Intent(context, MainActivity.class);
18             start.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//
19             context.startActivity(start);
20         }
21     }
22 }

②在AndroidManifest.xml文件里注册广播接收器.

1 <receiver android:name="com.example.systemtest.BootCompletedReceiver" >
2     <intent-filter>
3         <!-- 开机广播 -->
4         <action android:name="android.intent.action.BOOT_COMPLETED" />
5     </intent-filter>
6 </receiver>

③添加相应权限.

1 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

二、关机广播监听
与开机广播对应,Android系统在即将关闭时发出系统关闭广播(android.intent.action.ACTION_SHUTDOWN).

①编写一个继承BroadcastReceiver的类,接受系统关闭广播.

 1 package com.example.systemtest;
 2
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5
 6 import android.content.BroadcastReceiver;
 7 import android.content.Context;
 8 import android.content.Intent;
 9
10 /**
11  * 系统关闭广播接收器
12  * @author Lone_Wolf
13  */
14 public class ShutdownReceiver extends BroadcastReceiver {
15     @Override
16     public void onReceive(Context context, Intent intent) {
17         if (intent.getAction().equals(Intent.ACTION_SHUTDOWN)) {
18             //example:写入文件
19             FileOutputStream fos;
20             try {
21                 fos = new FileOutputStream(
22                           android.os.Environment.getExternalStorageDirectory()
23                           + File.separator + "SysLog.txt", true);
24                 fos.write("系统退出".getBytes("utf-8"));
25                 fos.close();
26             } catch (Exception e) {
27                 e.printStackTrace();
28             }
29         }
30     }
31 }

②在AndroidManifest.xml文件里注册广播接收器.

1 <receiver android:name="com.example.systemtest.ShutdownReceiver" >
2     <intent-filter>
3         <!-- 关机广播 -->
4         <action android:name="android.intent.action.ACTION_SHUTDOWN" />
5     </intent-filter>
6 </receiver>

注: onReceive中代码的执行时间不要超过5s,否则android会弹出超时dialog.
     如果需要做耗时处理,可以在onReceive()里开始一个Service,让Service去做耗时处理.
     最好不要用子线程,因为BroadcastReceiver的生命周期很短,子线程可能还没有结束BroadcastReceiver就先结束了.

时间: 2024-08-06 16:30:23

Andoird 监听开机广播和关机广播的相关文章

默认开机启动;通过Broadcastreceiver广播监听开机启动,实现&quot;没有activity&quot;的自启服务或者自启应用程序。

一.首先介绍一下如何开机启动: 第一种:  监控RECEIVE_BOOT_COMPLETED,即开机启动事件 第二种: 监控sd卡mount事件  开机总会扫描sd卡吧? 监控sd卡事件也有类似开机启动效果,特别app安装在sd卡的情况下有些os是抓取不到RECEIVE_BOOT_COMPLETED 第三种: android:installLocation="internalOnly", 限制app的安装位置,使其能抓取到RECEIVE_BOOT_COMPLETED 我们也可以同时使用

Android 监听开机广播启动服务 动态注册时间变化监听广播

开机广播权限 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 开机广播 注册 <receiver android:name="com.stone.receiver.BootedReceiver"> <intent-filter> <action android:name="android.intent.acti

linux下数据库实例监听开机自启动设置

linux下数据库实例监听开机自启动设置 2016/5/16 zhanky 脚本介绍 在开始之前,我们先介绍一下几个会用到的脚本. oratab oratab文件是在创建数据库实例时建立的,在安装时使用root用户执行root.sh脚本后得到.(如果忘记也可以直接手动创建.) 在$ORACLE_HOME/bin目录下的$ORACLE_HOME/bin/dbstart和$ORACLE_HOME/bin/dbshut需要调用/etc/oratab文件,如果不存在,dbstart和dbshut将失败,

ndroid如何监听开机广播和关机广播

需求描述:有些时候,我们需要我们的程序在开机后能自动运行,在系统即将关闭时,能写入一些记录到指定的文件里. 一.开机广播监听: Android系统启动完成后会发出启动完成广播(android.intent.action.BOOT_COMPLETED),所有注册了接收启动完成广播的接收器(BroadcastReceiver)都会收到此广播. 1.在AndroidManifest.xml文件里添加授予应用程序访问系统开机事件的权限 <uses-permission android:name="

为什么监听不到开机广播action.BOOT_COMPLETED

为什么监听不到开机广播action.BOOT_COMPLETED 1. 说明 Android手机开机后,会发送android.intent.action.BOOT_COMPLETED广播,监听这个广播就能监听开机. 2. 代码  注册广播   <receiver android:name="com.javen.broadcast.BootBroadCastReceiver" > <intent-filter> <action android:name=&q

Android手机使用广播监听手机收到的短信

我们使用的Android手机在收到短信的时候会发出一条系统广播.该条广播中存放着接收到的短信的详细信息.本文将详细介绍如何通过动态注册广播来监听短信. 注册广播有两种方式,一种是动态注册,另一种是静态注册.动态注册,顾名思义就是在程序运行时注册的,需要用到广播的时候就注册,用完即销毁.静态注是在AndroidManifest.xml中注册的,在<application>中使用<receiver>标签注册. 那么如何创建一个监听短信的广播接收器呢,其实只需要新建一个类,让这个类继承B

android 蓝牙设备监听广播

蓝牙权限 <uses-permission android:name="android.permission.BLUETOOTH" /> 1.监听手机本身蓝牙状态的广播 手机蓝牙开启关闭时发送 action: BluetoothAdapter.ACTION_STATE_CHANGED if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { int state = intent.getIntExtra(Bluet

Android之——监听手机开机事件

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47028535 本文中,主要通过监听开机广播来达到监听手机开机状态的操作,在Android中可以通过广播机制来监听一些系统服务和系统级的操作,好了,不多说,直接上代码吧 1.创建广播接收者类BootCompleteReceiver 这个类中的回调方法是手机开机后自动调用,我在这里只是打印出相关日志,具体的业务逻辑大家可以自己根据自己的具体需求去实现. 代码如下: package c

ORACLE 12C 开机自动启动监听、CDB、PDB

linux下数据库实例监听开机自启动设置2018年8月1日 zhanky 测试介绍系统版本:Oracle linux 7.2 x64数据库版本:Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production实例名:orcl CDP:orcl PDB:orcl1.orcl2ORACLE_HOME:/u01/app/oracle/product/12.2.0/db_1 一.设置监听和CDB开机自启通过使用rc.