У меня есть Java-код для отображения веб-просмотра.В веб-представлении у вас есть несколько ссылок или баннеров.
Если пользователь нажимает на любую ссылку / баннер в веб-представлении, он должен открыть эту ссылку во внешнем браузере телефона по умолчанию, а не в веб-представлении.
Мойтекущий код (ниже), похоже, работает, но не со всеми типами ссылок.После нажатия на некоторые ссылки он открывается в веб-представлении.
Также, если вы считаете, что любой другой код можно оптимизировать, сообщите мне
mWebView.loadUrl(WebView_URL);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url)
{
WebView_Title = view.getTitle(); isWebViewLoaded=1;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
WebView_Title = "Please Wait...";
view.loadUrl(url); //TEMP FIX we need to handle the onclick or on touch event
return true;
}
@Override
public void onPageStarted(WebView view, String urltoload, Bitmap favicon)
{
//String url_new = view.getUrl();
if (urltoload != WebView_URL & isWebViewLoaded==1 & WebView_Title.equals("Please Wait...") & openlinksexternally == 1)
{
mWebView.loadUrl(WebView_URL);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urltoload));
activity.startActivity(intent);
return;
}
isWebViewLoaded=0;WebView_Title = "Loading...";
}
});
Также у меня есть этот код:
mWebView.setInitialScale(initialscale); //mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
MOVE_THRESHOLD_DP = 20.0F;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mDownPosX = event.getX();
mDownPosY = event.getY();
break;
case MotionEvent.ACTION_UP:
mUpPosX = event.getX();
mUpPosY = event.getY();
if ((Math.abs(mUpPosX - mDownPosX) < MOVE_THRESHOLD_DP) && (Math.abs(mUpPosY - mDownPosY) < MOVE_THRESHOLD_DP)) {
//your click code here
if (isWebViewLoaded==1)
{
//WebView_Title = "Please Wait...";//
}
}
break;
}
if (enablescrolling==true)
{
return false;
}
else
return (event.getAction() == MotionEvent.ACTION_MOVE);
}
});