2012-03-30 8 views
13

In meiner Anwendung wird shouldOverrideUrlLoading() nicht auf Honeycombe 3.2-Version aufgerufen. Ich habe es auf 2.2 und 4.0.1 getestet und alle funktionieren gut.Android-Webansicht sumoveroverlulling wird nicht aufgerufen

Ist es ein Fehler in Honeycomb? Wie kann ich das umgehen?

Ich brauche den benutzerdefinierten Header für jede Anforderung in shouldOverrideUrlLoading()

view.loadUrl(url,headers); 

Vielen Dank im Voraus zu senden.

+0

'shouldOverrideUrlLoading()' wird nicht ausgelöst, wenn die Anfrage POST ist (vielleicht ist das der Grund). –

+0

@SYLARRR Ich habe versucht, GET und POST auf andere Version und es funktioniert. – Riddle

+0

Diese Funktion wird oft nie aufgerufen. Ich habe das gleiche Problem auf einer Reihe von Websites gefunden www.youtube.com Ich habe nicht tief genug gegraben, um herauszufinden, warum, aber im Grunde ist diese Funktion unzuverlässig. – Lee

Antwort

10

Diese Methode wird nur aufgerufen, wenn der Benutzer die Navigation durchführt. Es wird nicht immer aufgerufen, wenn die Website den Benutzer umleitet. Ein gängiges Szenario hierfür ist eine Website, die AJAX verwendet, um den Inhalt der Seite zu ändern oder den Benutzer umzuleiten.

Sehen Sie sich die anderen Rückrufe im WebViewClient an, um einen zu finden, der Ihren Anforderungen entspricht: onLoadResource, onPageStarted. In Ihrem Fall richten Sie sich auf die API-Stufe 11+, daher sollte sinternceptRequest auch für Sie verfügbar sein.

+0

keine dieser 3 Methoden werden genannt, aber bei einigen Gelegenheiten fand ich aus Logs, die sie tatsächlich ausgelöst haben! Ist diese Routine unzuverlässig? –