Entwickeln eines Web-Monitors in Android

Ich möchte die Websites, die ein Benutzer in Android öffnet, überwachen / filtern.

Ich weiß, wie ich die zuletzt aufgerufene URL (im Android-Standardbrowser) mithilfe eines ContentObservers im Browserverlauf abrufen kann ...

private static class BrowserObserver extends ContentObserver {
    private static String lastVisitedURL = "";
    private static String lastVisitedWebsite = "";

    //Query values:
    final String[] projection = new String[] { Browser.BookmarkColumns.URL };  // URLs
    final String selection = Browser.BookmarkColumns.BOOKMARK + " = 0";  // history item
    final String sortOrder = Browser.BookmarkColumns.DATE;  // the date the item was last visited


    public BrowserObserver(Handler handler) {
        super(handler);
    }


    @Override
    public void onChange(boolean selfChange) {
        onChange(selfChange, null);
    }


    @Override
    public void onChange(boolean selfChange, Uri uri) {
        super.onChange(selfChange);

        //Retrieve all the visited URLs:
        final Cursor cursor = getContentResolver().query(Browser.BOOKMARKS_URI, projection, selection, null, sortOrder);

        //Retrieve the last URL:
        cursor.moveToLast();
        final String url = cursor.getString(cursor.getColumnIndex(projection[0]));

        //Close the cursor:
        cursor.close();

        if ( !url.equals(lastVisitedURL) ) {  // to avoid information retrieval and/or refreshing...
            lastVisitedURL = url;

            //Debug:
            Log.d(TAG, "URL Visited: " + url + "\n");
        }
    }
}

So registrieren Sie den von mir verwendeten ContentObserver:

browserObserver = new BrowserObserver(new Handler());
getContentResolver().registerContentObserver(Browser.BOOKMARKS_URI, true, browserObserver);

Und um die Registrierung aufzuheben:

getContentResolver().unregisterContentObserver(browserObserver);

Das funktioniert. Auf diese Weise kann ich die URLs jedoch erst analysieren, nachdem der Browser sie geladen hat.

Gibt es eine Möglichkeit, die URLs abzurufen, bevor der Browser sie tatsächlich in Android lädt?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage