模拟和发送触摸事件

时间:2014-12-20 06:48:47

标签: android webview dispatchevent

我在WebView中加载了一个HTML页面(比如它在页面末尾有一个文本和一个按钮来共享文本)。

我想模拟该共享按钮的触摸事件并将其发送到webview。那就是(一旦用户花了一些时间阅读文本我想以自动方式模拟共享按钮点击(onClick方法应该被调用),这样即使用户没有点击共享,我也强制要求分享。

这就是逻辑。我在Stack Overflow中使用了一些问题来触摸事件,并发现应该使用dispatchTouchEvent和MotionEvent但不清楚如何使用它们并应用我的逻辑。

如果有人能够详细解释上述引用的想法,那将会非常有用。

1 个答案:

答案 0 :(得分:0)

如果你知道x,y坐标点击的位置,这是可能的 在这个java示例(不是我的)中,它显示给定一个DOM元素的矩形,它将模拟一个点击:
这里的优点是,即使用户没有启动操作(受浏览器本身限制),您也可以模拟点击。
https://github.com/46cl/cordova-android-focus-plugin/blob/master/src/android/Focus.java 这是一个科尔多瓦的例子。有关如何从常规Android程序调用它的示例,请参见此处:
Android Webview: Execution of javascript from java method called from javascript

runOnUiThread(new Runnable() { public void run() { final long uMillis = SystemClock.uptimeMillis(); webView.dispatchTouchEvent(MotionEvent.obtain(uMillis, uMillis, MotionEvent.ACTION_DOWN, centerLeft, centerTop, 0)); webView.dispatchTouchEvent(MotionEvent.obtain(uMillis, uMillis, MotionEvent.ACTION_UP, centerLeft, centerTop, 0)); } });

你需要从你的javascript调用通过rect的调用你的java代码:
这是一个(一个cordova应用程序)从javascript调用java方法的例子:
https://github.com/46cl/cordova-android-focus-plugin/blob/master/www/focus.js