summitOverrideUrlLoading in WebView für Android wird nicht ausgeführt
-Edit: Lösung Gefunden-
Es herausgefunden, nachdem einige schwere Suche - eine person (ich wörtlich) sagte Sie stattdessen onPageLoad(); das funktioniert perfekt für meine Zwecke. Der Unterschied ist, dass onPageLoad() wird später als shouldOverrideUrlLoading, aber Es macht einen Unterschied, in meinem code.
Ich versuche zum einrichten der Twitter-Autorisierung mit OAuth für eine Android-app, und so weit ich erfolgreich senden können die Benutzer die Autorisierungs-URL, aber, was ich versuche zu tun, ist jetzt abfangen, dass die Umleitung der Rückruf (die führen nur zu einem 404 Fehler, unsere callback-URL nicht auf eine zugehörige Seite auf unseren Servern). Was ich versuche zu tun ist, überprüfen Sie, ob der URL ist unsere callback, extrahieren Sie dann die OAuth-Verifier aus der URL. Ich meine setup-WebView mit diesem code:
view = (WebView)findViewById(R.id.twitterWbVw);
view.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView wView, String url)
{
String urlHolder;
String[] verifExtrctr;
urlHolder = url.substring(0, url.indexOf('?'));
System.out.println("url");
if(urlHolder.equalsIgnoreCase(CALLBACK_URL))
{
verifExtrctr = urlHolder.split("?");
verifExtrctr = verifExtrctr[2].split("=");
if(verifExtrctr[0].equalsIgnoreCase("oauth_verifier"))
{
params[5] = verifExtrctr[1];
return true;
}
else
{
System.out.println("Inocorrect callback URL format.");
}
}
else
{
wView.loadUrl(url);
}
return true;
}
});
view.loadUrl(urlAuthorize.toExternalForm());
Sache ist sogar System.aus.println("url");(die ich zum Debuggen)nicht laufen! So bin ich ziemlich trocken auf Ideen, und nicht finden können, jemand mit einem ähnlichen problem. Die Autorisierungs-URL geht gut durch, und kann ich autorisieren Sie die app, jedoch die Weiterleitung an die callback-URL aus irgendeinem Grund nie zu bekommen ist, abgefangen. Jede Hilfe würde geschätzt, das ist in meinem onResume (), wenn das zählt.
InformationsquelleAutor der Frage Justin | 2011-07-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach einigen Recherchen komme ich zu dem Schluß, dass trotz was die meisten tutorials da draußen sagen,
shouldOverrideUrlLoading()
nicht aufgerufen, wenn:Laden Sie eine URL wie
Browser leitet den Benutzer automatisch über eine HTTP-Umleitung. (Siehe auch den Kommentar von @hmac unter Bezug auf Weiterleitungen)
Es jedochbekommen aufgerufen, wenn Sie Sie klicken auf einen link innerhalb einer Webseite innerhalb der webview. IIRC die twitter-Autorisierung verwendet eine HTTP-Umleitung.. Mist, das wäre hilfreich, wenn es funktionierte, wie all die tutorials sagen, es tut. Ich denke, dies ist aus einer sehr alten version der Android API...
Möchten Sie vielleicht zu berücksichtigen, überschreiben die
onProgressChanged
Methode einerWebChromeClient
wie hier: Wie zu hören für ein WebView-finishing laden einer URL? oder dieonPageFinished()
Methode derWebViewClient
.InformationsquelleAutor der Antwort citizen conn
Habe ich gefunden, was ich denke, ist ein vernünftiger Weg, dies zu tun Dank an die bisherigen Antworten und Kommentare zeigen mich in die richtige Richtung.
Was ich getan habe ist überschreiben onPageStarted und onPageFinished in einem benutzerdefinierten WebViewClient.
Der code geht so etwas wie dieses...
Und natürlich zusammen mit der Log.d würden Sie setzen keine spezifischen code, den Sie ausführen möchten, auf die Erkennung der Umleitung.
InformationsquelleAutor der Antwort Maks