12

我們是否可以使用READ_HISTORY_BOOKMARKS權限獲得Chrome瀏覽歷史記錄/書籤,如我們在默認瀏覽器中獲取的內容? PS:我只想知道這有可能嗎?我們可以在我們的android應用程序中獲得chrome瀏覽歷史記錄/書籤

+2

我認爲答案是否定的。我說的是正常情況,即沒有root訪問權限,每個應用都有單獨的數據保存在/ data文件夾中,並且沒有對其他應用文件夾的訪問權限。但是,如果你有root權限,那是另一種情況。 – dumbfingers

回答

14

是的,這是非常可能的。 使用這個URI:content://com.android.chrome.browser/bookmarks,而不是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(); 
    } 
} 

還沒有測試的錯誤代碼,但它應該工作的罰款。重要的是知道uri的使用。閱讀thisthis可能會有所幫助。

+3

如何弄清楚哪些URI是書籤(必須使用哪一個)的好方法?我使用Browser.BOOKMARKS_URI(= Uri.parse(「content:// browser/bookmarks」)):在大多數設備上工作正常,但在某些設備上(可能使用Chrome作爲默認設備),它會觸發一個「java.lang .IllegalArgumentException:未知的URL內容://瀏覽器/書籤「 在這種情況下,我應該嘗試Chrome URI嗎? 「content://com.android.chrome.browser/bookmarks」什麼是正確的方法來知道哪個書籤URI是(好的)在一個給定的設備/配置上使用的方式? – Pascal

+7

這不再適用於棉花糖了:https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-bookmark-browser – user1406716

相關問題