2010-04-05 107 views
31

我想閱讀Android手機中的瀏覽器歷史記錄。Android閱讀瀏覽器歷史

我已經做了一些文檔閱讀,然後我才知道我們可以通過android.provider.Browser類閱讀瀏覽器歷史。它有:

final static Cursor 
getAllVisitedUrls(ContentResolver cr) 

...返回Cursor的方法。

我可以幫助處理光標或任何示例代碼來獲取瀏覽器歷史記錄嗎?

回答

29

不是一個真正的答案,但我可以告訴你我做了什麼。

我首先克隆了browser repo並試圖重現他們如何獲得歷史。 而我開始:

拒絕權限:讀 com.android.browser.BrowserProvider

於是我說:

<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" /> 

但它仍然是給我同樣的錯誤。我谷歌它,我發現這Accessing Data With Android Cursors

希望它有幫助。

+1

的權限應該是:''那麼它就可以工作。 – Firebrandt 2011-06-23 12:46:40

+0

@Firebrandt:我剛修好了。謝謝。 – Macarse 2011-06-27 17:42:47

+0

此方法是否需要root訪問權限,還是僅需要該單一權限? – ethanpil 2012-04-16 15:58:32

9

對於棒棒糖或更早

我能夠通過使用下面的代碼來獲取歷史:

Cursor mCur = activity.managedQuery(Browser.BOOKMARKS_URI, 
        Browser.HISTORY_PROJECTION, null, null, null); 
      if (mCur.moveToFirst()) { 
       while (mCur.isAfterLast() == false) { 
        Log.v("titleIdx", mCur 
          .getString(Browser.HISTORY_PROJECTION_TITLE_INDEX)); 
        Log.v("urlIdx", mCur 
          .getString(Browser.HISTORY_PROJECTION_URL_INDEX)); 
        mCur.moveToNext(); 
       } 
      } 
+0

如何獲得時間,即當我們打開網站信息 – Venkat 2012-04-26 04:30:04

+2

Log.v(「urlIdx」,mCur.getString(Browser.HISTORY_PROJECTION_DATE_INDEX));試試看。和進一步的信息,請訪問http://developer.android.com/reference/android/provider/Browser.html – 2012-04-26 05:24:41

+1

這不會在棉花糖了:https://developer.android.com/about/versions/marshmallow/ android-6.0-changes.html#行爲 - 書籤瀏覽器 – user1406716 2015-10-25 21:32:23

18

managedQuery已被棄用,所以用getContentResolver而是使用下面的代碼:

String[] proj = new String[] { Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL }; 
String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history, 1 = bookmark 
Cursor mCur = getContentResolver().query(Browser.BOOKMARKS_URI, 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(); 
    } 
} 

還添加權限使用

<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" /> 
+0

這個答案的作品!我也根據這個回答做了一個例子 https://github.com/shanwu/shanwu_coding_base/tree/bookmark_record_example – shanwu 2014-07-14 14:51:56

+1

[與書籤相關的大多數事情都在API Level 23(Android 6.0+)中被刪除](https:// developer .android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-bookmark-browser) – Aashish 2018-02-09 04:29:02

3
public ArrayList<HistoryEntry> getBrowserHistory() { 

    String title = ""; 
    String url = ""; 

    ArrayList<HistoryEntry> list = new ArrayList<HistoryEntry>(); 

    String[] proj = new String[] { Browser.BookmarkColumns.TITLE, 
      Browser.BookmarkColumns.URL }; 
    String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history, 
                  // 1 = bookmark 
    Cursor mCur = getContentResolver().query(Browser.BOOKMARKS_URI, proj, 
      sel, null, null); 
    mCur.moveToFirst(); 

    if (mCur.moveToFirst() && mCur.getCount() > 0) { 
     boolean cont = true; 
     while (mCur.isAfterLast() == false && cont) { 
      HistoryEntry entry = new HistoryEntry(); 

      title = mCur.getString(mCur 
        .getColumnIndex(Browser.BookmarkColumns.TITLE)); 
      url = mCur.getString(mCur 
        .getColumnIndex(Browser.BookmarkColumns.URL)); 
      // Do something with title and url 
      entry.setTitle(title); 
          entry.setUrl(url); 
          list.add(entry); 
      Log.d("TAG", "title " + title); 
      mCur.moveToNext(); 
     } 
    } 

    mCur.close(); 

    return list; 
} 
+0

[與書籤相關的大部分內容都在API Level 23(Android 6.0+)中刪除](https:// developer .android.com /約/版本/棉花糖/ Android的6.0 changes.html#行爲書籤瀏覽器) – Aashish 2018-02-09 04:26:11

3

這個職位是有點老了,但這裏是獲取在Android的相關BookmarkSearch內容提供商數據的另一種簡單的解決辦法:這LIB

用途:https://github.com/EverythingMe/easy-content-providers

獲取所有書籤:

BrowserProvider browserProvider = new BrowserProvider(context); 
List<Bookmark> bookmarks = browserProvider.getBookmarks().getList(); 

每個書籤擁有各個領域,這樣你就可以得到任何信息,你需要: 標題,URL,訪問,...

獲取所有搜索歷史:

List<Search> searches = browserProvider.getSearches().getList(); 

它與列表或光標並有一個示例應用程序來查看它的外觀和工作方式。

事實上,對於所有Android內容提供商,如支持:聯繫人,短信,通話,... 完整文檔的所有選項:https://github.com/EverythingMe/easy-content-providers/wiki/Android-providers

希望它能幫助:)