1

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

问题是我想模拟该共享按钮的触摸事件并将其发送到 webview。也就是说(一旦用户花一些时间阅读文本,我想以自动方式模拟共享按钮单击(应该调用 onClick 方法),这样即使用户不单击共享,我也必须强制执行共享。

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

如果有人能详细解释上面引用的想法的用法,那将非常有帮助。

4

1 回答 1

1

如果您知道单击位置的 x,y 坐标,这是可能的。
在这个 java 示例(不是我的)中,它显示给定一个 DOM 元素的矩形,它将模拟点击:
这里的优点是即使用户没有启动操作(受浏览器限制),您也可以模拟点击本身)
https://github.com/46cl/cordova-android-focus-plugin/blob/master/src/android/Focus.java 这是一个cordova示例。有关如何从常规 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 代码:
这是一个从 javascript 调用 java 方法的示例(cordova 应用程序):
https ://github.com/46cl/cordova-android-focus -plugin/blob/master/www/focus.js

于 2015-02-16T23:53:17.603 回答