2011-12-15 14 views
7

जब मैं अपने ऐप में लिंक पर क्लिक करता हूं, तो वे उसी वेबव्यू में खुलते हैं। मैं उन्हें एक बाहरी ब्राउज़र में खोलना चाहता हूं।एंड्रॉइड वेबव्यू, विभिन्न ऐप में यूआरएल खोलें

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

}); 

झूठी लौटने यह एक ही वेबव्यू भीतर लोड बनाता है, और लौटने "सही" कुछ भी नहीं हो सकता है जब लिंक पर क्लिक होने बनाता है:

मैं ऐसा किया।

मैं अन्य प्रश्न को देखा लेकिन ऐसा लगता है कि हर किसी की ठीक विपरीत समस्या है। (वे चाहते हैं उनके ऐप में लोड करने के लिए लिंक)

मैं क्या गलत कर रहा हूं?

+0

क्या एक सच्चा लिंक (यूआरएल) या शायद जावास्क्रिप्ट स्निपेट लिंक है? –

+0

सच एचटीएमएल लिंक। – CQM

उत्तर

12

अपने 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 
    } 
} 

कि रास्ते में यह एक नई ब्राउज़र विंडो उसी तरह किसी अन्य अनुप्रयोग होगा खोलता है।

+2

यह काम करता है, इसे "ट्रू" पर वापस सेट करना होगा या फिर यह वेबव्यू के साथ-साथ ब्राउज़र में लोडिंग को डुप्लिकेट करेगा। – CQM

1

यहां एक और पूरा उत्तर है। नोट: मैं एक टुकड़े से कॉल कर रहा हूं इसलिए प्रारंभ करने से पहले एक्टिविटी() प्राप्त करें()

@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; 
    } 
संबंधित मुद्दे