12

possiamo ottenere la cronologia di navigazione di Chrome/segnalibri come otteniamo nel browser predefinito utilizzando il permesso READ_HISTORY_BOOKMARKS? PS: Voglio solo sapere è possibile?possiamo ottenere la cronologia di navigazione di Chrome/segnalibri nella nostra app per android

+2

Penso che la risposta sia no. Sto parlando del caso normale, ovvero senza accesso root, ogni app ha dati individuali che sono conservati nella cartella/data e non hanno permessi di accesso alla cartella di altre app. Tuttavia, se si dispone dell'accesso root, questo è un altro caso. – dumbfingers

risposta

14

Sì, è molto possibile. Utilizzare questo URI: content://com.android.chrome.browser/bookmarks invece di Browser.BOOKMARKS_URI

String[] proj = new String[] { Browser.BookmarkColumns.TITLE,Browser.BookmarkColumns.URL }; 
Uri uriCustom = Uri.parse("content://com.android.chrome.browser/bookmarks"); 
String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history, 1 = bookmark 
Cursor mCur = getContentResolver().query(uriCustom, proj, sel, null, null); 
mCur.moveToFirst(); 
@SuppressWarnings("unused") 
String title = ""; 
@SuppressWarnings("unused") 
String url = ""; 

if (mCur.moveToFirst() && mCur.getCount() > 0) { 
    boolean cont = true; 
    while (mCur.isAfterLast() == false && cont) { 
     title = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.TITLE)); 
     url = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.URL)); 
     // Do something with title and url 
     mCur.moveToNext(); 
    } 
} 

Havent testato il codice per gli errori, ma dovrebbe funzionare bene. L'importante è sapere l'uri da usare. La lettura di this e this potrebbe essere d'aiuto.

+3

Come capire quale URI è il migliore per i segnalibri (quale deve essere utilizzato)? Io uso Browser.BOOKMARKS_URI (= Uri.parse ("content: // browser/bookmarks")): funziona bene sulla maggior parte dei dispositivi, ma, su alcuni dispositivi, (probabilmente usando Chrome come predefinito), attiva un "java.lang" .IllegalArgumentException: contenuto URL sconosciuto: // browser/segnalibri " Dovrei provare l'URI di Chrome in questo caso? "content: //com.android.chrome.browser/bookmarks" Qual è il modo corretto per sapere quale URI del bookmark è il (buono) da usare su (un determinato dispositivo/configurazione)? – Pascal

+7

Questo non funzionerà più in Marshmallow: https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-bookmark-browser – user1406716

Problemi correlati