如何检测Android弹出窗口的触摸输入

时间:2017-11-20 08:08:28

标签: android

我正在开发记录应用程序的所有触摸输入的android库。 我已经设法拦截活动(和片段)的所有触摸输入,但不是弹出窗口。

如何检测活动中弹出的新窗口的触摸输入?

以下代码显示了我如何截取活动窗口的所有触摸输入。

Application.onCreate()内部,我呼叫Application.registerActivityLifecycleCallbacks(),并在回调后注册:

override fun onActivityCreated(activity: Activity, savedState: Bundle?) {    
    val localCallback = activity.window.callback
    activity.window.callback = object : ActivityWindowCallbackWrapper(activity, localCallback) {
        override fun dispatchTouchEvent(motionEvent: MotionEvent): Boolean {
            //over here I can log all touch input    
            return super.dispatchTouchEvent(motionEvent)
        }

        override fun onWindowFocusChanged(hasFocus: Boolean) {
            //here I can detect that some popup has popped up 
            //if hasFocus == false it means that some other window has focus -> probably popup 
            super.onWindowFocusChanged(hasFocus)
         }
     }
}

此代码拦截活动窗口的所有触摸事件,它识别何时聚焦另一个窗口(另一个窗口弹出),但我不知道如何为新聚焦的窗口注册回调。

here是如何检测应用程序的所有根视图的一个很好的示例,但我无法在它们上注册任何回调。

0 个答案:

没有答案