安卓开机广播,与关机广播

开机广播

  • 任何的targetSdkVersion版本都能收到该广播
  • 必须采用静态注册的方式(Manifest.xml中声明)

下面是对应的代码以及权限

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

  	<receiver
            android:name=".MyBootBroadcastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter android:priority="1000">

                <!-- 开机完成✅ 启动完成✅  开机是危险的行为,需要权限 -->
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

关机广播

  • 任何的targetSdkVersion版本都能收到该广播
  • 采用动态注册的方式(静态注册的我没有收到)

下面是广播内容

public class MyShutDownBroadReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();

        if (Intent.ACTION_SCREEN_ON.equals(action)) {
            L.d("屏幕打开");
        } else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
            L.d("关屏幕了,总的开屏幕时间" + (SystemClock.uptimeMillis() / 1000 / 60 + "分钟"));
        } else if (Intent.ACTION_USER_PRESENT.equals(action)) {
            L.d("屏幕解锁");
        } else if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) {
            L.d(" receive Intent.ACTION_CLOSE_SYSTEM_DIALOGS");
        } else if (Intent.ACTION_SHUTDOWN.equals(intent.getAction())) {
            L.d("Android操作系统关机了");
            D.showShort("Android操作系统关机了");
            P.putString("end", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()) + "");
        } else if (Intent.ACTION_DATE_CHANGED.equals(action)) {//日期变化步数重置为0
            L.d("日期改变ACTION_DATE_CHANGED");
        } else if (Intent.ACTION_TIME_CHANGED.equals(action)) {
            L.d("时间变化ACTION_TIME_CHANGED" + action);
        } else if (Intent.ACTION_TIME_TICK.equals(action)) {//日期变化步数重置为0
            L.d("时间改变ACTION_TIME_TICK" + action);
        }
    }
}

动态注册

 		IntentFilter filter = new IntentFilter();
        // 屏幕灭屏广播
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        //关机广播
        filter.addAction(Intent.ACTION_SHUTDOWN);
        // 屏幕亮屏广播
        filter.addAction(Intent.ACTION_SCREEN_ON);
        // 屏幕解锁广播
//        filter.addAction(Intent.ACTION_USER_PRESENT);
        // 当长按电源键弹出“关机”对话或者锁屏时系统会发出这个广播
        // example:有时候会用到系统对话框,权限可能很高,会覆盖在锁屏界面或者“关机”对话框之上,
        // 所以监听这个广播,当收到时就隐藏自己的对话,如点击pad右下角部分弹出的对话框
        filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        //监听日期变化
        filter.addAction(Intent.ACTION_DATE_CHANGED);
        filter.addAction(Intent.ACTION_TIME_CHANGED);
        filter.addAction(Intent.ACTION_TIME_TICK);

        myShutDownBroadReceiver = new MyShutDownBroadReceiver();
        registerReceiver(myShutDownBroadReceiver, filter);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值