वहाँ HTML फ़ाइल में लिंक के दो प्रकार हैं के लिए नहीं कहा:WebView shouldOverrideUrlLoading() अमान्य लिंक
(1) A normal link like http://www.bbb.com/q?type=normal
(2) A short link like /q?type=short.
पहली तरह के लिए, बस यूआरएल लोड। दूसरी तरह के लिए, मुझे यूआरएल लोड करने से पहले http://www.abc.com जैसे एक निश्चित पते के साथ इसे पूर्ववत करना चाहिए।
मैं WebViewClient में चाहिएOverrideUrlLoading() फ़ंक्शन को ओवरराइड करने के साथ ऐसा करने का प्रयास कर रहा हूं। हालांकि इस समारोह को दूसरे प्रकार के लिंक के लिए बुलाया नहीं जाता है। मैंने HTML फ़ाइल में दूसरे प्रकार के लिंक पर "http://www.abc.com" को पूर्ववत करने का प्रयास किया। फिर जब मैं दूसरे प्रकार के लिंक पर क्लिक करता हूं तो फ़ंक्शन कॉल किया जाता है।
मुझे लगता है कि क्या हो रहा है वेबव्यू पहले जांच करेगा कि लिंक मान्य यूआरएल है या नहीं। केवल तभी वैध होगा जब कार्य को बुलाया जाएगा। क्या मैं सही हू? इसे कैसे हल किया जा सकता है? अग्रिम में धन्यवाद।
contentWebView = new WebView(context);
webViewClient = new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// String not in Logger.
Log.d(TAG, "Here!");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
context.startActivity(intent);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (hosted) {
contentWebView.setVisibility(VISIBLE);
} else {
summaryTextView.setVisibility(VISIBLE);
articleLinkButton.setVisibility(VISIBLE);
}
progressBar.setVisibility(View.GONE);
}
};
contentWebView.setWebViewClient(webViewClient);
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.loadData(fullString, "text/html", "utf-8");
contentWebView.setVisibility(GONE);
अधिक इस पर:
मैं
contentWebView.loadDataWithBaseURL("http://www.abc.com", fullString, "text/html", "utf-8", null);
तब समारोह कहा जाता हो जाता है करने के लिए
contentWebView.loadData(fullString, "text/html", "utf-8");
बदलते कोशिश की।
यदि मैं मैन्युअल रूप से HTML स्ट्रिंग में एक पूर्ण लिंक के लिए छोटा लिंक बदलता हूं। फिर समारोह भी बुलाया जाता है।
तो मुझे लगता है कि यह संभवतः हो रहा है: WebView जांचता है कि लिंक यूआरएल वैध है या नहीं। केवल जब यूआरएल मान्य होगा तो चाहिए ओवरराइडउर्ल लोडिंग() को कॉल किया जाना चाहिए।
क्या आप हमें अपने कंधे ओवरराइडउर्ल लोडिंग() कार्यान्वयन का कुछ कोड दिखा सकते हैं? – shkschneider
@shkschneider कोड जोड़ा गया। लेकिन समस्या यह है कि अगर यूआरएल वैध नहीं है तो फ़ंक्शन को कॉल नहीं किया जा रहा है। – darklord
आपके संपादन के बाद नोट: हाँ, यह वही होता है जो वास्तव में होता है। बेसयूआरएल – shkschneider