में जावास्क्रिप्ट के माध्यम से कैप्चरिंग पेज रीडायरेक्ट करता है मेरे पास मेरे ऐप में एक वेब व्यू है जो एक पृष्ठ प्रदर्शित करता है जो मुझसे संबंधित नहीं है। मेरा वांछित व्यवहार यह है कि, यदि उपयोगकर्ता द्वारा कोई लिंक टैप किया गया है, तो डिवाइस का ब्राउज़र ऐप लॉन्च किया गया है, और परिणामी पृष्ठ वहां लोड हो गया है। दुर्भाग्यवश, यह पृष्ठ कुछ अजीब चीजें कर रहा है, इसलिए shouldOverrideUrlLoading()
आग नहीं है।एंड्रॉइड के वेबव्यू
मेरा प्रयास समाधान कुछ जावास्क्रिप्ट को पुशस्टेट में हुक करना और ब्राउज़र ऐप लॉन्च करने के लिए एंड्रॉइड कोड चलाने के लिए एक इंटरफ़ेस का उपयोग करना है।
public class LaunchExternalBrowserHack {
Context mContext;
LaunchExternalBrowserHack(Context c) {
mContext = c;
}
@JavascriptInterface
public void launchExternalBrowser(String url) {
openUrl(url);
}
}
मैं onPageFinished()
में पेज में कुछ जावास्क्रिप्ट इंजेक्शन लगाने कर रहा हूँ:,
private final String javascript = "javascript:history.pushState = function (state, title, url) { console.log(url); console.log(location.href); Uphoria.launchExternalBrowser(location.origin, url); };";
और की:
public void onPageFinished(WebView view, String url) {
mWebView.loadUrl(javascript);
}
यहाँ मेरी जावास्क्रिप्ट है
यहाँ मेरी इंटरफेस है बेशक, मैं WebView
पर इंटरफ़ेस जोड़ रहा हूं:
mWebView.addJavascriptInterface(new LaunchExternalBrowserHack(getContext()), "Android");
तो ऐसा लगता है कि यह काम करता है। ब्राउज़र ऐप लॉन्च हो रहा है और अगला पेज खुल रहा है।
हालांकि, वेबव्यू भी आगे बढ़ रहा है। मैं इसे रोकना चाहता हूं, लेकिन मुझे वेबव्यू आगे बढ़ने से रोकने का कोई तरीका नहीं मिल रहा है, जबकि मुझे अभी भी अग्रेषण यूआरएल कैप्चर करने और ब्राउज़र ऐप लॉन्च करने की इजाजत मिल रही है। जैसा कि मैंने पहले उल्लेख किया था, इस वेबपृष्ठ के साथ, shouldOverrideUrlLoading
फायरिंग नहीं है।
विचार?
आप 'onReceiveValue (...)' में एक परिणाम नहीं मिल रहा है का उल्लेख यह देख सकते हैं। क्या आप देख सकते हैं कि फ़ंक्शन कॉल में जावास्क्रिप्ट को बदलना काम करेगा या नहीं? [इस जवाब] की तरह (http://stackoverflow.com/a/19790911/503508) सुझाव देता है। विशेष रूप से, इस शैली में: '(फ़ंक्शन() {वापसी {var1: \" variable1 \ ", var2: \" variable2 \ "};})();' – Knossos