¿Puede una aplicación móvil acceder al historial de cualquier navegador (Chrome, Safari, etc.)?

Sí, es muy posible. Utilice este uri: content: //com.android.chrome.browser/bookmarks en lugar de Browser.BOOKMARKS_URI

String [] proj = new String [] {Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL};
Uri uriCustom = Uri.parse (“contenido: //com.android.chrome.browser/bookmarks”);
String sel = Browser.BookmarkColumns.BOOKMARK + “= 0”; // 0 = historial, 1 = marcador
Cursor mCur = getContentResolver (). Query (uriCustom, proj, sel, null, null);
mCur.moveToFirst ();
@SuppressWarnings (“sin usar”)
Título de la cadena = “”;
@SuppressWarnings (“sin usar”)
String url = “”;

if (mCur.moveToFirst () && mCur.getCount ()> 0) {
cont booleano = verdadero;
while (mCur.isAfterLast () == false && cont) {
title = mCur.getString (mCur.getColumnIndex (Browser.BookmarkColumns.TITLE));
url = mCur.getString (mCur.getColumnIndex (Browser.BookmarkColumns.URL));
// Haz algo con título y url
mCur.moveToNext ();
}
}
Havent probó el código en busca de errores, pero debería funcionar bien. Lo importante es saber la uri a usar.

No creo que sea posible desde una aplicación. No estoy seguro de si una aplicación web puede hacerlo o no.

Si no hay API estándar para Safari / UIWebview, evite probarlo. Apple puede rechazar su aplicación.