web-dev-qa-db-ja.com

Androidブラウザの履歴を読む

Android電話でブラウザの履歴を読みたい。

ドキュメントの読み取りをいくつか行った後、Android.provider.Browserクラスによってブラウザーの履歴を読み取ることができることを知りました。以下があります:

final static Cursor
getAllVisitedUrls(ContentResolver cr)

...Cursorを返すメソッド。

カーソルを処理するためのヘルプや、ブラウザの履歴を取得するためのサンプルコードを入手できますか?

32
Mitul Nakum

本当の答えではありませんが、私がやったことをお伝えできます。

最初に browser repo のクローンを作成し、履歴を取得する方法を再現します。そして、私は取得し始めました:

許可の拒否:com.Android.browser.BrowserProviderの読み取り

だから私は追加しました:

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

しかし、それでも同じエラーが発生します。私はそれをグーグルで見つけました Android Cursors でデータにアクセスしています。

それが役に立てば幸い。

29
Macarse

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" />
18
Aditya

Lollipop以前の場合

次のコードを使用して履歴を取得できます。

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();
                }
            }
9
Mitul Nakum

この投稿は少し古いですが、AndroidのBookmarkおよびSearchコンテンツプロバイダーに関連するデータを取得するための別の簡単なソリューションがあります。

このライブラリを使用してください: https://github.com/EverythingMe/easy-content-providers

すべてのブックマークを取得:

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

Bookmarkにはすべてのフィールドがあるため、必要な情報を取得できます:title、url、visits、...

すべてを取得Search履歴:

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

それはリストまたはカーソルで動作し、そこにどのように見えて動作するかを見るためのサンプルアプリがあります。

実際、次のようなすべてのAndroidコンテンツプロバイダーをサポートしています:Contacts、SMS、Calls、...すべてのオプションを含む完全なドキュメント:- https://github.com/EverythingMe/easy-content-providers/wiki/Android-providers

それが助けたことを願っています:)

4
sromku
  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;
}
3
naidu