公司有Android设备,通过Intent.ACTION_SHUTDOWN广播可以接收到系统关机事件,收到此事件我会写日志保存到文件,有时候,我想知道是用户手动关机的,还是设备有问题自动关机的,这怎么办?最好的办法就是获取电源键的长按事件,如下:
val receiver = object: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
Log.i("ABCD", "收到了一个广播: ${intent?.action}")
intent?.extras?.keySet()?.forEach {
Log.i("ABCD", "$it = ${intent.extras?.get(it)}")
}
}
}
registerReceiver(receiver, IntentFilter().apply {
addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
addAction(Intent.ACTION_SCREEN_OFF)
addAction(Intent.ACTION_SCREEN_ON)
})
当然,如果要监听电源长按事件,只注册Intent.ACTION_CLOSE_SYSTEM_DIALOGS这个广播就够了。至于监听电源的单击事件,至今仍然下落不明!