2013-07-26 151 views
1

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

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; 
    } 

} 

回答

9

尝试:

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。希望这可以帮助。

+0

非常感谢所有回复 –

+0

我可以为webchrome客户端做同样的工作吗 – devutkarsh

+0

@DevUtkarsh对不起,我没有使用过'WebChromeClient',尝试没有什么坏处我猜。 –

0

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

WebView w;  

w.setWebViewClient(新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); 
     } 

    }); 
0

应重写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; 
}}); 
相关问题