Android携帯でブラウザの履歴を読みたい。
ドキュメントを読んだ後、android.provider.Browserクラスでブラウザの履歴を読み取ることができることがわかりました。それは:
final static Cursor
getAllVisitedUrls(ContentResolver cr)
...を返すメソッドCursor
。
カーソルを処理するためのヘルプ、またはブラウザの履歴を取得するためのサンプルコードを入手できますか?
Android携帯でブラウザの履歴を読みたい。
ドキュメントを読んだ後、android.provider.Browserクラスでブラウザの履歴を読み取ることができることがわかりました。それは:
final static Cursor
getAllVisitedUrls(ContentResolver cr)
...を返すメソッドCursor
。
カーソルを処理するためのヘルプ、またはブラウザの履歴を取得するためのサンプルコードを入手できますか?
本当の答えではありませんが、私が何をしたかをお話しすることができます。
最初にブラウザリポジトリのクローンを作成し、それらがどのように履歴を取得するかを再現しようとします。そして私は取得し始めました:
許可の拒否:com.android.browser.BrowserProviderを読み取る
だから私は追加しました:
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
しかし、それでも同じエラーが発生します。私はそれをグーグルで検索し、Androidカーソルを使用したデータへのアクセスを見つけました。
それが役に立てば幸い。
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" />
ロリポップ以前の場合
次のコードを使用して履歴を取得できます。
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();
}
}
この投稿は少し古いですが、AndroidBookmark
のSearch
コンテンツプロバイダーに関連するデータを取得するための別の簡単なソリューションは次のとおりです。
このライブラリを使用してください: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();
リストまたはカーソルで動作し、サンプルアプリで外観と動作を確認できます。
実際、連絡先、SMS、通話など、すべてのAndroidコンテンツプロバイダーがサポートされて います。すべてのオプションを含む完全なドキュメント:https ://github.com/EverythingMe/easy-content-providers/wiki/Android-providers
お役に立てば幸いです:)
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;
}