2014-12-20 101 views
1

我已經在WebView中加載了一個HTML頁面(假設它在頁面末尾有一個文本和一個按鈕來共享文本)。模擬和調度觸摸事件

事情是我想模擬該共享按鈕的觸摸事件並將其分派給webview。也就是說(一旦用戶花費一些時間閱讀文本,我想以自動方式模擬分享按鈕點擊(應該調用onClick方法),以便即使用戶不點擊分享,我已經強制要求共享。

是這樣的邏輯。我審閱一些問題章觸摸事件的堆棧溢出,發現dispatchTouchEvent和MotionEvent應該使用,但不清楚如何使用它們,運用我的邏輯。

這將是非常如果有人能夠詳細解釋其與上述引用的想法相關的用法,則會有幫助。

回答

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代碼調度電話:
這裏是一個例子(一個科爾多瓦應用程序)從javascript調用java方法:
https://github.com/46cl/cordova-android-focus-plugin/blob/master/www/focus.js

+0

我將如何模擬滾動或扔(快速滾動)? –