首页 > 解决方案 > WebView 中的 URL 自动重定向 - Android

问题描述

我的应用程序中的 WebView 工作正常,但是当我加载 URL= https://www.esheba.cnsbd.com/#/ 它会自动重定向到作为下载链接链接在网站底部的 Play 商店链接,但是当我浏览链接表单浏览器时工作正常。请任何人告诉我为什么它只在 WebView 中重定向?这是我正在使用的代码。

在 XML 中

<WebView
        android:layout_alignParentTop="true"
        android:id="@+id/campaign_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

活动中

campaign_webview.getSettings().setJavaScriptEnabled(true);
campaign_webview.getSettings().setLoadWithOverviewMode(true);
campaign_webview.getSettings().setDomStorageEnabled(true);
campaign_webview.getSettings().setUseWideViewPort(true);
campaign_webview.getSettings().setBuiltInZoomControls(false);
campaign_webview.getSettings().setPluginState(WebSettings.PluginState.ON);
campaign_webview.setWebViewClient( new CustomClient());
campaign_webview.loadUrl(url);

private class CustomClient extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return false;
        }

        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed();
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            Log.d("web_view: finish",url);
        }

    }

标签: javaandroidandroid-webview

解决方案


如果它是 Play 商店链接,我认为您想重定向到 Play 商店。因此,如果这是您想要的,那么您可以使用:

@Override
    public boolean shouldOverrideUrlLoading(WebView 
    view, String url) {
        
    if (url.startsWith("intent://")) {
    //load store
         try{
         Intent intent = Intent.parseUri(url, 
           Intent.URI_INTENT_SCHEME);
         PackageManager packageManager = 
         context.getPackageManager();
         ResolveInfo info = 
          packageManager.resolveActivity(intent, 
           PackageManager.MATCH_DEFAULT_ONLY);
       if (info != null) {
       context.startActivity(intent);
        }

         return true;

       }catch((ActivityNotFoundException e)
       {
          //If activity not found try to load it and also a display toast.


          Toast.makeText(context, "Activity not found", Toast.LENGTH_SHORT).show();

          return false;
       }
   
   }
   else
   {
          //load url
          view.loadUrl(url);
           return false;
    }

}

推荐阅读