2011-12-15 26 views
7

aynı web görünümünde açılır. Harici bir tarayıcıda açılmasını istiyorum.Android Webview, benim app bağlantıları tıklattığınızda, farklı tarayıcıda açık yapmak

myWebView.setWebViewClient(new WebViewClient() 
{ 
       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        return false; 
       } 

}); 

aynı Web görünümündeki içinde yüklenmektedir sahte dönen ve bir bağlantı tıklandığında hiçbir şey yapar "gerçek" dönen:

bunu yaptım.

Diğer sorulara baktım ama herkesin tam tersi problemi var gibi görünüyor. (onlar)

Neler yapıyorum? senin WebViewClient

@Override 
public boolean shouldOverrideUrlLoading(final WebView view, final String url){ 
    if (loadUrlExternally){ 
     Uri uri = Uri.parse(url); 
     Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
     startActivity(intent); 
     return true; //the webview will not load the URL 
    } else { 
     return false; //the webview will handle it 
    } 
} 

O sayede

+0

gerçek bağlantı (URL) ya da belki bir javascript pasajı bağlamak mı arayacağım? –

+0

true html bağlantısı. – CQM

cevap

12

yeni bir tarayıcı penceresi başka bir uygulama olur aynı şekilde açılır.

+2

Bu çalışma, aynı zamanda "True" dönüşünü ayarlamak veya tarayıcıda olduğu gibi web görünümünde de yüklemeyi çoğaltmak zorunda. – CQM

1

İşte daha eksiksiz bir cevap. Not: Ben dolayısıyla parçasından startActivity önce getActivity()()

@Override 
    public boolean shouldOverrideUrlLoading(final WebView view, final String url) 
    { 
     //check if the url matched the url loaded via webview.loadUrl() 
     if (checkMatchedLoadedURL(url)) 
     { 
      return false; 
     } else 
     { 
      getActivity().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
      return true; 
     } 

/** 
    * used to check if the loaded url matches the base url loaded by the fragment(mUrl) 
    * @param loadedUrl 
    * @return true if matches | false if doesn't or either url is null 
    */ 
    private boolean checkMatchedLoadedURL(String loadedUrl) 
    { 
     if (loadedUrl != null && mUrl != null) 
     { 
      // remove the tailing space if exisits 
      int length = loadedUrl.length(); 
      --length; 
      char buff = loadedUrl.charAt(length); 
      if (buff == '/') 
      { 
       loadedUrl = loadedUrl.substring(0, length); 
      } 

      // load the url in browser if not the OTHER_APPS_URL 
      return mUrl.equalsIgnoreCase(loadedUrl); 
     } 
     return false; 
    } 
İlgili konular