Ich suche nach einer Möglichkeit, die aktuelle URL zu erhalten, die ein Benutzer in der Android-Browseranwendung besucht. Ich fand heraus, dass ich die letzte besuchte URL aus der Browser.BOOKMARKS_URI
Datenbank mit dem folgenden Verfahren erhalten werden:Abrufen der aktuellen URL in einem Android-Browser
Cursor cursor = context.getContentResolver().query(Browser.BOOKMARKS_URI,
Browser.HISTORY_PROJECTION, null, null,
Browser.BookmarkColumns.DATE + " DESC");
cursor.moveToNext();
String url = cursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
cursor.close();
Das Problem dabei ist, dass die Browser.BOOKMARKS_URI
db nicht aktualisiert, wenn der Benutzer drückt, um zurück um zur vorherigen Seite im Browser zu navigieren, und die Abfrage gibt falsche Ergebnisse zurück.
Siehe das folgende Beispiel:
- Benutzer navigiert zu www.google.com ->Abfrage gibt "www.google.com"
- Benutzer navigiert zu www.imdb.com ->liefert den Wert "www.imdb.com"
- Benutzer drückt auf www.google.com, um wieder zurück ->liefert den Wert "www.imdb.com" (!!)
Hat jemand eine Idee, wie man die korrekte URL zurückgibt, die ein Benutzer ansieht?
Der Inhalt Resolver wie erwartet funktioniert: Drücken Sie die 'www.google.com' Seite nicht zurück nicht neu geladen, sondern es aus dem Cache liest. Dasselbe passiert, wenn der Benutzer die Registerkarte wechselt: Der Verlauf zeigt die zuletzt geladene URL an, nicht unbedingt die, die angezeigt wird. Sie können die aktuelle URL in einem in Ihre App eingebetteten WebView verfolgen. –
Ich arbeite nicht mit einem in meine App eingebetteten WebView. Ich versuche die aktuelle Webseite der Android Browser App zu finden. –
Ich denke, das ist außerhalb einer normalen App-Funktion, in der Regel können Sie nicht auf andere App-Daten zugreifen, es sei denn, es bietet irgendwie, Browser-Geschichte scheint das einzige, was Sie tun können. – Nanoc