如何在Android中获取WebView的输入区点击回调
我正在用Android开发键盘。键盘包含一个网络视图。当用户在WebView中单击网页的输入区域时,应显示键盘面板。在我检查了WebView的所有回调之后,我找不到任何调用的回调。我怎样才能知道用户在点击输入区域并执行某些操作?尝试检查:如何在Android中获取WebView的输入区点击回调,android,webview,Android,Webview,我正在用Android开发键盘。键盘包含一个网络视图。当用户在WebView中单击网页的输入区域时,应显示键盘面板。在我检查了WebView的所有回调之后,我找不到任何调用的回调。我怎样才能知道用户在点击输入区域并执行某些操作?尝试检查: public class WebViewClicker extends Activity implements OnTouchListener, Handler.Callback { private static final int CLICK_ON
public class WebViewClicker extends Activity implements OnTouchListener, Handler.Callback {
private static final int CLICK_ON_WEBVIEW = 1;
private static final int CLICK_ON_URL = 2;
private final Handler handler = new Handler(this);
private WebView webView;
private WebViewClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view_clicker);
webView = (WebView)findViewById(R.id.web);
webView.setOnTouchListener(this);
client = new WebViewClient(){
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) {
handler.sendEmptyMessage(CLICK_ON_URL);
return false;
}
};
webView.setWebViewClient(client);
webView.setVerticalScrollBarEnabled(false);
webView.loadUrl("http://www.example.com");
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.getId() == R.id.web && event.getAction() == MotionEvent.ACTION_DOWN){
handler.sendEmptyMessageDelayed(CLICK_ON_WEBVIEW, 500);
}
return false;
}
@Override
public boolean handleMessage(Message msg) {
if (msg.what == CLICK_ON_URL){
handler.removeMessages(CLICK_ON_WEBVIEW);
return true;
}
if (msg.what == CLICK_ON_WEBVIEW){
Toast.makeText(this, "WebView clicked", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
我发现WebView会将触摸事件发送给OnTouchListener。它确实有自己的onTouchEvent方法,但我似乎只使用该方法获取MotionEvent.ACTION\u移动
因此,考虑到我们可以在已注册的触摸事件侦听器上获取事件,剩下的唯一问题是,当用户单击URL时,如何规避您希望对触摸执行的任何操作
这可以通过一些奇特的处理程序的步法来实现,方法是发送一条延迟的触摸消息,然后如果触摸是由用户单击URL引起的,则删除这些触摸消息。在您的页面上使用javascript和javascript界面绑定webview@njzk2网页不像google.com那样受到控制。我们不能在页面中添加javascript。当然可以。加载后,您可以在页面上执行js。这仅适用于单击URL的用户。我需要的是在用户单击输入区域时调用回调。请检查它