我的应用程序只是一个显示特定网站的WebView。用户无法简单地使用Chrome应用,因为Android中的固有编程会改变点击功能。
为简单起见,我们假设该网站显示日历,并在该日历上显示框。可以单击这些框进行选择,也可以双击打开以显示事件详细信息。
该网站的编码可以处理单个或双击事件时的操作:
<div class="boardpiece clickable" onclick="select(event, this);" ondblclick="open('5657849');"
使用longpress模拟双击,我完全没问题。这就是我的困惑开始的地方。如何告诉我的应用程序当用户对项目执行SingleTap时,它需要激活网站所要求的“onclick”?我还需要告诉应用程序,当用户对同一项目执行longpress时,激活您在网站编码中看到的“ondblclick”事件?
这是我的活动代码:
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.SslErrorHandler;
import android.net.http.SslError;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
public class MainActivity extends Activity{
WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = (WebView) findViewById(R.id.webview);
//Do we want/need to enable Java?
webview.getSettings().setJavaScriptEnabled(true);
//Here we allow for zoom controls - pinch
webview.getSettings().setBuiltInZoomControls(true);
//Here we remove the zoom control buttons - requires API 11
webview.getSettings().setDisplayZoomControls(false);
//Here we clear the Cache and SSL Preferences
webview.clearCache(true);
webview.clearSslPreferences();
//Do we need to enable scroll bars to allow people to scroll left and right?
webview.setHorizontalScrollBarEnabled(true);
webview.setVerticalScrollBarEnabled(true);
webview.setWebViewClient(new WebViewClient());
webview.loadUrl("https://website");
final GestureDetector gd = new GestureDetector(new MyGestureDetector());
View.OnTouchListener gl = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gd.onTouchEvent(event);
}
};
webview.setOnTouchListener(gl);
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.i("", "DoubleTap");
return true;
}
public boolean onSingleTap(MotionEvent e) {
Log.i("", "SingleTap");
return true;
}
}
// Ignore SSL certificate errors
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
//Would like to have a Menu Button to refresh the page - or really just bring you to the login page - for use when the session times out
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(1, 1, 0, "Reload");
//getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.reload:
webview.loadUrl("website");
return true;
}
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:0)
我认为你看错了。而不是检测Android中的双击并尝试将其注入到您的Javascript中,您可能会检测到Javascript中的双击。只需保留最后一次点击的时间,如果它已经足够,则第二次点击是双击的一部分。