Search code examples
androidgoogle-chromeandroid-browser

Clear chrome browser history programmatically


I have tried using the following code but it doesn't work with chrome, only the old browser.

Browser.clearHistory(getContentResolver());

Solution

  • this code work for me

    private void clearHistoryChrome() {
        ContentResolver cr = getContentResolver();
        if (canClearHistory(cr)) {
            deleteHistoryWhere(cr, null);
        }
    }
    
    private void deleteHistoryWhere(ContentResolver cr, String whereClause) {
        String CONTENT_URI = "content://com.android.chrome.browser/history";
        Uri URI = Uri.parse(CONTENT_URI);
        Cursor cursor = null;
        try {
            cursor = cr.query(URI, new String[]{"url"}, whereClause,
                    null, null);
            if (cursor != null) {
                if (cursor.moveToFirst()) {
                    final WebIconDatabase iconDb = WebIconDatabase.getInstance();
                    do {
                        // Delete favicons
                        // TODO don't release if the URL is bookmarked
                        iconDb.releaseIconForPageUrl(cursor.getString(0));
                    } while (cursor.moveToNext());
                    cr.delete(URI, whereClause, null);
                }
            }
        } catch (IllegalStateException e) {
            Log.i("DEBUG_", "deleteHistoryWhere IllegalStateException: " + e.getMessage());
            return;
        } finally {
            if (cursor != null) cursor.close();
        }
        Log.i("DEBUG_", "deleteHistoryWhere: GOOD");
    }
    
    public boolean canClearHistory(ContentResolver cr) {
        String CONTENT_URI = "content://com.android.chrome.browser/history";
        Uri URI = Uri.parse(CONTENT_URI);
        String _ID = "_id";
        String VISITS = "visits";
        Cursor cursor = null;
        boolean ret = false;
        try {
            cursor = cr.query(URI,
                    new String[]{_ID, VISITS},
                    null, null, null);
            if (cursor != null) {
                ret = cursor.getCount() > 0;
            }
        } catch (IllegalStateException e) {
            Log.i("DEBUG_", "canClearHistory IllegalStateException: " + e.getMessage());
        } finally {
            if (cursor != null) cursor.close();
        }
        Log.i("DEBUG_", "canClearHistory: " + ret);
        return ret;
    }
    

    I think this will help you