Как вы заставляете открывать все клики по ссылкам в веб-обозревателе Android в браузере телефонов по умолчанию? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть 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);  
                    }
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...