我正在开发一个记录应用程序的所有触摸输入的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)
此代码拦截活动窗口的所有触摸事件,它识别何时聚焦不同的窗口(另一个窗口弹出),但我不知道如何为新聚焦的窗口注册回调.
这是一个关于如何检测应用程序的所有根视图的一个很好的例子,但是我不能在它们上注册任何回调.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |