Back pressed events with system alert window

后端 未结 10 1575
南笙
南笙 2021-01-03 03:21

I need to dismiss system alert window on back pressed and home button event.I have tried with onKeyEvent but in vain. As we can\'t cap

10条回答
  •  暗喜
    暗喜 (楼主)
    2021-01-03 03:58

    In addition to @Eliran Kuta's solution, this is more simple answer for Back button.

    val view = getAlertView()
    val windowParam = WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT, // whatever
        WindowManager.LayoutParams.WRAP_CONTENT, // whatever
        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, // use WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY before Oreo
        WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, // whatever
        PixelFormat.TRANSLUCENT // whatever
    )
    
    view.isFocusableInTouchMode = true
    view.setOnKeyListener { view, keyCode, event ->
        when (keyCode) {
            KeyEvent.KEYCODE_BACK -> {
                // do your work here
                true
            }
            else -> false
        }
    }
    
    val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
    windowManager.addView(view, windowParam)
    

提交回复
热议问题