小编Krz*_*tal的帖子

如何检测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)
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

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

是一个关于如何检测应用程序的所有根视图的一个很好的例子,但是我不能在它们上注册任何回调.

android

5
推荐指数
0
解决办法
116
查看次数

标签 统计

android ×1