2012-02-16 15 views
9

का पता लगाने के अपने Android एप्लिकेशन में वेब दृश्य है और जब डी यूआरएल परिवर्तन का पता लगाने के लिए चाहते हैं।एंड्रॉयड वेबव्यू URL परिवर्तन

मैं उपयोगकर्ता info.php पृष्ठ पर है जब यह उपयोग करने के लिए शीर्ष पट्टी में जानकारी बटन को छिपाना चाहते हैं और इसे फिर से दिखाने के जब वह info.php पृष्ठ पर नहीं है।

मैं googled, लेकिन किसी भी काम के कोड नहीं मिल रहा है, किसी को भी मेरी मदद कर सकते?

अग्रिम में Thx!

+1

शायद यह आपकी मदद करेगा http://stackoverflow.com/questions/6868599/unable-to-get-currnet-url-on-click-event-of-web-view-in-android .. वर्तमान प्राप्त करें पेज पर प्रारंभ किए गए पेज के लिए यूआरएल और आपको सेट किया जाना चाहिए। –

+0

Thx, महान काम करता है! – Daniel

+0

अगर आपको अपना –

उत्तर

8

आप WebViewClient.shouldOverrideUrlLoading का उपयोग onLoadResource उपयोग करने के लिए

+8

मिल गया है तो कृपया उत्तर दें/ऊपर वोट दें यह जावास्क्रिप्ट द्वारा यूआरएल परिवर्तन का पता नहीं लगा सकता है जो वेब पेज रीलोड का कारण नहीं बनता है। –

+0

@HelinWang –

+0

@HelinWang का पता लगाने का कोई अन्य तरीका है, क्या आपको जावास्क्रिप्ट रीडायरेक्ट के लिए कोड पता चला है? –

0

कोशिश अपने WebViewClient पर हर यूआरएल परिवर्तन का पता लगाने के लिए कर सकते हैं। यदि आप अपना यूआरएल बदलने के लिए जेएस का उपयोग कर रहे हैं, तो इसे कम से कम 1 बार कहा जाएगा। लेकिन इसे एक से अधिक बार कहा जा सकता है, इसलिए सावधान रहें।

1

मुझे एक दिलचस्प समस्या थी जो मुझे इस प्रश्न पर लाया और एक समाधान प्रदान करने में प्रसन्नता हुई जो किसी और की मदद कर सकती है अगर वे googlebingyahoo खोज के कारण इस तरह से आते हैं।

mwebVew.reload() नया URL मैं लोड करने के लिए एक बार मैं एक वरीयता स्क्रीन जहाँ मैं या तो उपयोगकर्ता लॉग ऑन से लौटे या उपयोगकर्ता लॉग ऑफ चाहता था लेने नहीं होगा। यह साझा प्राथमिकताओं को पर्याप्त रूप से अपडेट करेगा लेकिन यूआरएल वेब पेज को अपडेट और प्रतिस्थापित नहीं करेगा। तो जवाब देखने के कुछ घंटों के बाद मैंने निम्नलिखित की कोशिश की और यह एक असली इलाज किया।

mWebView.resumeTimers(); 

यहाँ link to the doco यदि आप अधिक जानकारी चाहते हैं।

इसे किसी और दर्द मैं माध्यम से चला गया बचाता है आशा है, और कोई मुझे बता मैं इसे दूसरे तरीके से लागू किया की चाहिए करने के लिए खुश।

10
जावास्क्रिप्ट द्वारा उन लोड यूआरएल के लिए

। JavascriptInterface द्वारा यूआरएल परिवर्तन का पता लगाने का एक तरीका है। यहां मैं उदाहरण के लिए यूट्यूब का उपयोग करता हूं। जावास्क्रिप्टइंफेस का उपयोग एसिंक मुद्दा है, सौभाग्य से यह सिर्फ एक कॉलबैक है ताकि कम समस्या होगी। ध्यान दें कि @javascriptinterface एनोटेशन मौजूद होना चाहिए।

{ 
    youtubeView.getSettings().setJavaScriptEnabled(true); 
    youtubeView.setWebViewClient(mWebViewClient); 
    youtubeView.addJavascriptInterface(new MyJavaScriptInterface(), 
      "android"); 
    youtubeView.loadUrl("http://www.youtube.com"); 

} 

WebViewClient mWebViewClient = new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     view.loadUrl("javascript:window.android.onUrlChange(window.location.href);"); 
    }; 
}; 

class MyJavaScriptInterface { 
    @JavascriptInterface 
    public void onUrlChange(String url) { 
     Log.d("hydrated", "onUrlChange" + url); 
    } 
} 
+0

में बहिष्कृत समाधान MyJavaScriptInterface का उपयोग क्यों करें जब आप सीधे पेज पर काम कर सकते हैं? –

+1

जावास्क्रिप्ट: window.android.onUrlChange (window.location.href); जावास्क्रिप्ट भाषा वेबव्यू के अंदर काम करता है। जावास्क्रिप्ट इंटरफेस प्रिंट वास्तव में यूआरएल। चूंकि वेबव्यू जावास्क्रिप्ट द्वारा यूआरएल लोड करता है, परफेज अभी भी मूल यूआरएल पास कर रहा है लेकिन आप वास्तव में पहले से ही एक नया यूआरएल दर्ज कर चुके हैं। –

+0

@ शू झांग, काम नहीं कर रहा है, मेरे वेबपृष्ठ में जावास्क्रिप्ट का उपयोग कर रीडायरेक्ट है लेकिन काम नहीं कर रहा है। कृपया मदद करे। –

4

अगर आप आप यूआरएल परिवर्तनों को संभाल कर सकेंगे WebViewClient की इस पद्धति, और जावास्क्रिप्ट यूआरएल परिवर्तन ओवरराइड:

public class YXWebViewClient extends WebViewClient { 

@Override 
public void onPageStarted(WebView view, String url, Bitmap favicon) { 
    super.onPageStarted(view, url, favicon); 
    Log.i("Listener", "Start"); 

} 

@Override 
public void onPageFinished(WebView view, String url) { 
    super.onPageFinished(view, url); 
    Log.i("Listener", "Finish"); 
    } 

} 

और फिर अपने WebView में WebViewClient सेट

yxWebViewClient = new YXWebViewClient(); 
webview.setWebViewClient(yxWebViewClient); 
-1

यह जावास्क्रिप्ट के कारण पुनर्निर्देशन का पता लगाने में मदद करेगा।

WebViewClient mWebViewClient = new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      view.loadUrl("javascript:window.android.onUrlChange(window.location.href);");   } 
    }; 
    myWebView.setWebViewClient(mWebViewClient); 
    } 
@JavascriptInterface 
public void onUrlChange(String url) { 
    Toast.makeText(mContext, "Url redirected",Toast.LENGTH_SHORT).show(); 
} 
0

विधि पर विधि परिभाषित कम से कम आधुनिक वेब व्यू में काम करता प्रतीत होता है।

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