andrlid home按下监测方法

本文介绍了使用BroadcastReceiver来监测Android设备上的Home键被按下,同时提到onUserLeaveHint事件虽然在用户离开Activity时也会触发,但不适用于所有情况,如电话来电或Activity结束时。
摘要由CSDN通过智能技术生成

用BroadcastReceiver监听home按钮方法

private class HomeButtonReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {

        Log.d("homekeytest","HOME 被按下")

    }
}

private var mHomeKeyReceiver: HomeButtonReceiver? = null


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    // 注册Reciever
    mHomeKeyReceiver = HomeButtonReceiver()
    val filter:IntentFilter =  IntentFilter()

    filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
    registerReceiver(mHomeKeyReceiver, filter)
}

override fun onPause() {
    super.onPause()
    unregisterReceiver(mHomeKeyReceiver)
}

//onKeyDown方法,返回键按下时可以被检测到,但是检测不到home键
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
    Log.d("onKeyDown", KeyEvent.keyCodeToString(keyCode))
    when (keyCode) {
        KeyEvent.KEYCODE_A -> {

            //your Action code
            return true
        }
    }
    return super.onKeyDown(keyCode, event)
}

另外按下home键onUserLeaveHint事件也会被触发。

onUserLeaveHint事件当用户要离开当前activity的时候会被出发,比如按下home键,start另外一个activity时。

但是当电话来电时,或者当前activity finish时不会被触发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值