我在WebView中加载了一个HTML页面(比如它在页面末尾有一个文本和一个按钮来共享文本)。
我想模拟该共享按钮的触摸事件并将其发送到webview。那就是(一旦用户花了一些时间阅读文本我想以自动方式模拟共享按钮点击(onClick方法应该被调用),这样即使用户没有点击共享,我也强制要求分享。
这就是逻辑。我在Stack Overflow中使用了一些问题来触摸事件,并发现应该使用dispatchTouchEvent和MotionEvent但不清楚如何使用它们并应用我的逻辑。
如果有人能够详细解释上述引用的想法,那将会非常有用。
答案 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