2013-02-20 161 views
1

我想在webview中打开url,但它在外部浏览器中打开url。webview loadUrl在浏览器中打开url

我的代码是

public class MainActivity extends Activity 
{ 

    private WebView webView; 

    String URL = "https://login.salesforce.com/services/oauth2/authorize?response_type=token&display=touch&client_id=3MVG9Y6d_Btp4xp7w.6oGLerlRztTTUKMEL8QWHvuB5miUgdJzQ0HgnMB7dhm1mTiluRv4ud9cZYeFcAz7hXP&redirect_uri=https%3A%2F%2Flogin.salesforce.com%2Fservices%2Foauth2%2Fsuccess"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 



     setContentView(R.layout.webview); 

     webView = (WebView) findViewById(R.id.webView1); 
     webView.getSettings().setJavaScriptEnabled(true); 

     webView.getSettings().setDomStorageEnabled(true); 
     webView.loadUrl(URL); 
     //webView.loadUrl("https://www.google.co.in/"); 
     webView.setWebViewClient(new MyWebViewClient()); 
    } 

    private class MyWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (Uri.parse(url).getHost().equals(url)) { 
       // This is your web site, so do not override; let the WebView to load the page 
       return false; 
      } 
      // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(intent); 
      return true; 
     } 

     @Override 
     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
      super.onReceivedSslError(view, handler, error); 

      // this will ignore the Ssl error and will go forward to your site 
      handler.proceed(); 
     } 
    } 

} 

如果URL为https:www.google.com那么URL仅在web视图打开。我一直在努力寻找解决方案,但我无法找到它。如何解决这个问题?

回答

2

的问题是在你的

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (Uri.parse(url).getHost().equals(url)) { 
      // This is your web site, so do not override; let the WebView to load the page 
      return false; 
     } 
     // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
     startActivity(intent); 
     return true; 
    } 

它试图加载的URL为不同的意图,因此您的默认浏览器踢英寸 你到底要检查与

乌里.parse(url).getHost()。equals(url)

尝试将检查日志,你会弄清楚什么是错的。

+0

雅这是我的错误 – 2013-02-20 12:53:03

+0

thinks buddy!节省了我的时间 – 2017-07-31 23:40:33

相关问题