1

我在我的应用程序中使用 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 中特别提到了移动设备,但它仍在重定向。任何的想法..??

4

3 回答 3

0

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

然后重写 shouldOverrideUrlLoading方法。

“当即将在当前 WebView 中加载新的 url 时,让主机应用程序有机会接管控制权。如果未提供 WebViewClient,默认情况下 WebView 将要求 Activity Manager 为 url 选择正确的处理程序。如果 WebViewClient提供,return true 表示宿主应用程序处理 url,而 return false 表示当前 WebView 处理 url。"

于 2012-09-05T07:01:56.397 回答
0

需要使用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();
    }



}
于 2012-09-05T07:04:59.053 回答
0

@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);
于 2012-09-05T07:08:36.040 回答