Android 監聽 Back鍵、Home鍵、Menu鍵
1.Back鍵
Activity用法
override fun onBackPressed() {
    ToastUtil.toast("攔截妳")
}
Fragment用法
override fun onAttach(context: Context) {
    super.onAttach(context)
    val callback = object : OnBackPressedCallback(true) {
        override fun handleOnBackPressed() {
            Toast.makeText(context, "攔截妳", Toast.LENGTH_SHORT).show()
        }
    }
    requireActivity().onBackPressedDispatcher.addCallback(this, callback)
}
2.Home鍵&Menu鍵
創建廣播接收者
class KeyReceiver : BroadcastReceiver() {
    val REASON = "reason"
    val HOMEKEY = "homekey"
    val RECENTAPPS = "recentapps"
    override fun onReceive(context: Context?, intent: Intent?) {
        intent?.apply {
            val action = intent.action
            if (action == Intent.ACTION_CLOSE_SYSTEM_DIALOGS) {
                val reason = intent.getStringExtra(REASON)
                if (TextUtils.equals(reason, HOMEKEY)) {
                    Toast.makeText(context, "HOME", Toast.LENGTH_SHORT).show()
                } else if (TextUtils.equals(reason, RECENTAPPS)) {
                    Toast.makeText(context, "MENU", Toast.LENGTH_SHORT).show()
                }
            }
        }
    }
}
註冊接收者
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    registerReceiver(KeyReceiver(), IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS))
}