【问题标题】:Android WebView click open with in WebView not a default browser?Android WebView 在 WebView 中单击打开不是默认浏览器?
【发布时间】:2013-07-26 03:05:18
【问题描述】:

我使用 WebView 做了一个示例应用程序,在该 Web 视图中,URL 来自 Web 服务。它工作正常,但如果我单击该 WebView 中的任何链接,它会自动转到默认 Web 浏览器。但我只想在我的应用程序 Web 视图中打开。这是我的代码:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String url ="http://www.cementegypt.com/m/";
        WebView view =(WebView) this.findViewById(R.id.webView1);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl(url);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

【问题讨论】:

    标签: android android-webview


    【解决方案1】:

    试试:

    WebView view =(WebView)findViewById(R.id.webView1);
    view.getSettings().setJavaScriptEnabled(true);
    view.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return false;
        }
    });
    

    来源:This@momo 回答非常相似的问题:Link should be open in same web view in Android。希望这会有所帮助。

    【讨论】:

    • 非常感谢所有重播
    • 我可以为 webchrome 客户端做同样的事情吗?
    • @DevUtkarsh 很抱歉,我没有与WebChromeClient 合作过。我猜尝试没有坏处。
    【解决方案2】:

    这是因为 WebView.loadUrl 仅用于查看网页,而您似乎就像创建自己的浏览器一样,这是另一个问题。尝试使用这样的东西:

    WebView w;    
    

    w.setWebViewClient(new WebViewClient(){

            @Override
            public void onLoadResource(WebView view, String url) {
                // TODO Auto-generated method stub
                super.onLoadResource(view, url);
            }
    
            @Override
            public void onReceivedError(WebView view, int errorCode,
                    String description, String failingUrl) {
                // TODO Auto-generated method stub
                super.onReceivedError(view, errorCode, description, failingUrl);
            }
    
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                return super.shouldOverrideUrlLoading(view, url);
            }
    
        });
    

    【讨论】:

      【解决方案3】:

      你应该重写 WebViewClient 类的 shouldOverrideUrlLoading() ,这里会像-

          w.setWebViewClient(new WebViewClient() {
              @Override
              public boolean shouldOverrideUrlLoading(WebView view, String url) 
              {
                  super.shouldOverrideUrlLoading(view, url);
      
                  if(url!=null&&(URLUtil.isHttpsUrl(url)||URLUtil.isHttpUrl(url)))
                  {
                      view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                      return true;
                  }
      return false;
      }});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-26
        • 2011-05-12
        • 2014-05-22
        • 2014-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多