2013-02-02 9 views
12

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

मैं अपने ऐप में भौगोलिक स्थान का उपयोग करना चाहता हूं और वेब वर्च क्लाइंट में वेबविच क्लाइंट के दृश्य में देखने की आवश्यकता है जिसे मैं अब एचटीएमएल फाइलों के लिए उपयोग करता हूं और लिंक एक ही दृश्य में रहते हैं।

जब मैं इसे वेब क्रोम क्लाइंट में बदलता हूं, तो HTML लिंक, जैसे <a href="http://url/file.php?q=123", ब्राउज़र में अचानक खुल रहे हैं!

मैं इसे कैसे रोक सकता हूं?

myWebView = new WebView(this); 
myWebView.getSettings().setJavaScriptEnabled(true); 
myWebView.getSettings().setLoadWithOverviewMode(true); 
myWebView.getSettings().setUseWideViewPort(true); 
myWebView.getSettings().setGeolocationEnabled(true); 
myWebView.setWebChromeClient(new WebChromeClient() { 
public void onGeolocationPermissionsShowPrompt(String origin, android.webkit.GeolocationPermissions.Callback callback) { 
     callback.invoke(origin, true, false); } 
}); 
myWebView.loadUrl("file:///android_asset/HTML/index.html"); 
setContentView(myWebView); 

उत्तर

2

ब्राउज़र में लिंक को खोलने के लिए आप अपने webview का उपयोग कर लिंक को संभालने के लिए बनाम एक ब्राउज़र में URL लॉन्च करने के लिए shouldOverrideUrlLoading विधि में एक intent उपयोग कर सकते हैं:

webView.setWebViewClient(new WebViewClient(){ 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url != null && url.startsWith("http://")) { 
      view.getContext().startActivity(
       new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

आप लोड करना चाहते हैं वेबव्यू उपयोग में:

WebViewClient yourWebClient = new WebViewClient() 
{ 
    // Override page so it's load on my view only 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     // This line we let me load only pages with an anchor tag 
     if (url.contains("url") == true) 
      //Load new URL Don't override URL Link 
     return false; 

    // Return true to override url loading (In this case do nothing). 
    return true; 
    } 
}; 
+0

क्षमा करें, लेकिन यह है कि इसके विपरीत है। मैं लिंक चाहता हूं, जैसे Harry

+0

मेरे द्वारा पोस्ट किए गए संपादन देखें। – Nick

+4

निक की मदद करने के लिए धन्यवाद लेकिन मैंने आपको खो दिया ... आप WebViewClient के लिए कोडिंग कर रहे हैं और मैं WebChromeClient के बारे में पूछ रहा हूं ... – Harry

6

मैं WebChromeClient के अलावा एक डमी WebViewClient सेट करके ऐसा चारों ओर पाने के लिए कर रहा था। निश्चित नहीं है क्यों, लेकिन जब मैं इस लाइन को निकालता हूं तो वेब पेज ब्राउज़र में फिर से खोलना शुरू कर देता है।

mBrowser.setWebViewClient(new WebViewClient()); 
49

WebChromeClient shouldOverrideUrlLoading विधि शामिल नहीं है, WebViewClient करता है। याद रखें कि "WebView" निर्दिष्ट किए जाने पर एक ही समय में WebViewClient और WebChromeClient दोनों का उपयोग कर सकता है। WebViewClient आपके द्वारा उपलब्ध क्लाइंट के बिना उपलब्ध नहीं है (वेबव्यू में नेविगेशन रखते हुए)। WebChromeClient के साथ समान विधियों का उपयोग किया जा सकता है (उदाहरण के लिए लोड पर पृष्ठ शीर्षक प्राप्त करें)।

तो तुम इस तरह अपने कोड का निर्माण कर सकते हैं:

WebView web = (WebView)findViewById(R.id.web); 
WebSettings webSettings = web.getSettings(); 
webSettings.setJavaScriptEnabled(true); 
webSettings.setGeolocationEnabled(true); 
webSettings.setSupportMultipleWindows(true); // This forces ChromeClient enabled.  

web.setWebChromeClient(new WebChromeClient(){ 
    @Override 
    public void onReceivedTitle(WebView view, String title) { 
     getWindow().setTitle(title); //Set Activity tile to page title. 
    } 
}); 

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

मेरी समस्या का समाधान किया। मैंने माना (और मुझे लगता है कि कई अन्य डेवलपर्स) कि हमें WebChromeClient या WebViewClient सेट करना चाहिए, लेकिन दोनों नहीं। – Bugdr0id

+0

यह मेरी मदद करता है, मैं सोच रहा था कि @ Bugdr0id –

+0

ने मेरी समस्या हल की है। इससे पहले, मैंने http://developer.android.com/guide/webapps/webview.html की कोशिश की, लेकिन ब्राउज़र अभी भी lanches। –

संबंधित मुद्दे