让我们来一起监听Andrid开关机事件吧

2,987 阅读1分钟

直接上代码

开机监听

实现BroadcastReceiver广播接收器

class BootUpBroadcast : BroadcastReceiver(){
    private val tag = "BootUpBroadcast"
    override fun onReceive(context: Context?, intent: Intent?) {
        if (intent?.action == "android.intent.action.BOOT_COMPLETED"){
            Log.e(tag,"开机了·····")
        }
    }
}

manifests.xml中注册静态广播

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    ...
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <application
        ...>
        ...
         <receiver android:name=".borad.BootUpBroadcast">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

关机监听

实现BroadcastReceiver广播接收器

class ShutdownBroadcast : BroadcastReceiver() {
    private val tag = "ShutdownBroadcast"
    override fun onReceive(context: Context?, intent: Intent?) {
        Log.e(tag,"关机了·····")
    }
}

manifests.xml中注册静态广播

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    ...
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <application
        ...>
        ...
        <receiver android:name=".borad.ShutdownBroadcast">
            <intent-filter >
                <action android:name="android.intent.action.ACTION_SHUTDOWN" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

注意

广播消息接收并非实时的,差不多有4秒的延迟,关机广播接收后大概有10秒来做一些操作,这个时候是有网络连接的,测试机器是小米4,这个延迟和和关机操作时间可能因机型而异。 最后别忘了加权限<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />