Android просмотреть историю браузера
Я хочу прочитать историю браузера на телефоне Android.
Я прочитал некоторое чтение документа, а затем узнаю, что мы можем читать историю браузера с помощью класса android.provider.Browser. Он имеет:
final static Cursor
getAllVisitedUrls(ContentResolver cr)
..., который возвращает Cursor
.
Могу ли я получить помощь для обработки курсора или любого примера кода для получения истории браузера?
Ответы
Ответ 1
Не совсем ответ, но я могу сказать вам, что я сделал.
Сначала я клонировал репо браузера и попытался воспроизвести, как они получают историю.
И я начал получать:
Отказ от прав: чтение com.android.browser.BrowserProvider
Итак, я добавил:
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
Но это все равно дает мне ту же ошибку. Я google, и я нашел это Доступ к данным с помощью курсоров Android.
Надеюсь, что это поможет.
Ответ 2
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" />
Ответ 3
Для 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();
}
}
Ответ 4
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;
}
Ответ 5
Это сообщение немного устарело, но вот еще одно простое решение для получения данных, связанных с Bookmark
и Search
поставщиками контента в Android:
Используйте этот 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, таких как: Контакты, SMS, звонки,...
Полный документ со всеми опциями: https://github.com/EverythingMe/easy-content-providers/wiki/Android-providers
Надеюсь, что это помогло:)