【问题标题】:Webview URL redirects/changes when launch tablet启动平板电脑时 Webview URL 重定向/更改
【发布时间】:2012-09-05 06:54:02
【问题描述】:

我在我的应用程序中使用 webview 并使用代码提供硬编码的 URL。一切都运行良好,但是当我在 10.1" 平板电脑上测试它时遇到了一件事情。我提供的 URL 在手机上运行良好,但在平板电脑上它会将自身重定向到 URL 的桌面版本。

知道如何防止这种情况发生。我正在使用这个网址:http://search.yahoo.com/mobile/s?submit=oneSearch&.intl=us&.lang=en&.tsrc=yahoo&.sep=fp&x=0&y=0&p=bike

我在 URL 中特别提到了移动,但它仍然是重定向。任何想法..??

【问题讨论】:

    标签: android android-webview android-websettings yahoo-search


    【解决方案1】:

    需要使用webview客户端

            WebView   web = (WebView) findViewById(R.id.webView1);  
            web.loadUrl(myurl.trim());
        web.setWebViewClient(new HelloWebViewClient());
    
    private class HelloWebViewClient extends WebViewClient  
    {
    
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);        
            Log.i(General.TAG,Tag+"Page Loading is Started...");
            web.setVisibility(View.GONE);
            pbr.setVisibility(View.VISIBLE);
    
        }       
    
        @Override
        public boolean shouldOverrideUrlLoading(WebView  view, String url)
        {           
        view.loadUrl(url);  
        return true;            
        }
    
        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);            
            Log.i(General.TAG,Tag+"Page Loading is Finished");
    
            web.setVisibility(View.VISIBLE);
            pbr.setVisibility(View.GONE);
            web.requestFocus();
        }
    
    
    
    }
    

    【讨论】:

    • 你好 Ankit,我用过 WebViewClient,我在顶部分享了我的代码。你对此有什么想法吗?你可以看看我的代码。
    【解决方案2】:

    为了处理重定向,您需要使用WebViewClient

    然后重写 shouldOverrideUrlLoading 方法。

    "当一个新的 url 即将在当前 WebView 中加载时,让宿主应用程序有机会接管控制权。如果未提供 WebViewClient,默认情况下 WebView 将要求 Activity Manager 选择合适的处理程序对于url。如果提供了WebViewClient,返回true表示宿主应用程序处理url,返回false表示当前WebView处理url。"

    【讨论】:

    • 嘿,我已经使用了您提到的 WebViewClient,但它不起作用。我已经在顶部分享了我的代码,请检查代码,看看出了什么问题。
    • 在 web 视图客户端覆盖 shouldOverrideUrlLoading 方法并在那里执行您需要的代码
    • 我已经尝试过使用它,你可以在这里查看我的代码:stackoverflow.com/a/12276223/1321290 请我在那里缺少什么。
    【解决方案3】:

    @Eldhose M Babu 和@ankitmakwana:我用过它,但我不确定其中缺少什么。我已附上代码,请看一下并指导我:

    mWebview.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO Auto-generated method stub
                super.onPageStarted(view, url, favicon);
    
                mWebview.setVisibility(View.GONE);
    
    
            }
    
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
    
            @Override
            public void onPageFinished(WebView view, String url) {
                // TODO Auto-generated method stub
                super.onPageFinished(view, url);
    
                mWebview.setVisibility(View.VISIBLE);
    
                mWebview.requestFocus();
            }
    
            public void onLoadResource(WebView view, String url) {
                mWebview.loadUrl("javascript:(function() { "
                        + "document.getElementsByTagName('header')[0].style.display = 'none'; "
                        + "})()");
    
                mWebview.loadUrl("javascript:(function() { "
                        + "document.getElementsByTagName('footer')[0].style.display = 'none'; "
                        + "})()");
    
                mWebview.loadUrl("javascript:(function() { "
                        + "document.getElementsByTagName('section').search_again.style.display = 'none'; "
                        + "})()");
            }
        });
    
        mWebview.loadUrl("http://search.yahoo.com/mobile/s?submit=oneSearch&.intl=us&.lang=en&.tsrc=yahoo&.sep=fp&x=0&y=0&p=bike");
        setContentView(mWebview);
    

    【讨论】:

    • 你能告诉我它是如何工作的,因为你接受了答案
    猜你喜欢
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多