【问题标题】:URL Automatic redirecting in WebView - AndroidWebView 中的 URL 自动重定向 - Android
【发布时间】:2020-08-30 16:55:15
【问题描述】:

我的应用程序中的 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);
        }

    }

【问题讨论】:

    标签: java android android-webview


    【解决方案1】:

    如果它是 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;
        }
    
    }
    

    【讨论】:

    • 感谢您的重播,但我不想打开 playstore,实际上我想知道为什么 url = esheba.cnsbd.com 没有在 webview 中加载它重定向到 playstore 网站。
    • 因为当它再次重定向时,它可能以“intent://”开头。只需记录您的 url 并查看 logcat 以确认这一点。
    猜你喜欢
    • 2017-06-27
    • 2011-06-25
    • 2011-10-24
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多