先是搜索了一下,在manifest裡添加
[html]
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
有了這個權限就可以讀取上網記錄和書簽了。開始時我以為只有上網記錄,但是明顯bookmarks是表示書簽啊。而書簽一般是沒有時間這個內容的。所以對query語句進行了修改,添加搜索限制條件。
[java]
contentResolver.query(Uri.parse("content://browser/bookmarks"), new String[] {
"title", "url", "date" }, "date!=?",new String[] { "null" }, "date desc");
這句表示在路徑“content:……bookmarks”裡搜索title, url, date這三列,條件是date!=null,並按照日期降序排序。
其實最開始的時候我是沒有添加時間的,但是想想獲取上網記錄也關心時間,就想添加這個屬性,可是發現在三星某款手機裡不可以,因為一開始我搜索的時候沒有添加限制條件,所以連書簽都檢索出來了,就像之前說的,書簽是不會有時間這個屬性的(這應該是一般情況)。而很奇怪的是,之前沒有修改的代碼在小米上就可以運行,而且只是檢索出來上網記錄,沒有包括書簽(這才是特殊情況……)。應該是小米做了修改,啊啊,android的碎片化好頭疼啊。
以下是全部代碼:
[java]
public class GetInternetRecord {
String records = null;
StringBuilder recordBuilder = null;
public void getRecords(ContentResolver contentResolver) {
// ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(
Uri.parse("content://browser/bookmarks"), new String[] {
"title", "url", "date" }, "date!=?",
new String[] { "null" }, "date desc");
while (cursor != null && cursor.moveToNext()) {
String url = null;
String title = null;
String time = null;
String date = null;
recordBuilder = new StringBuilder();
title = cursor.getString(cursor.getColumnIndex("title"));
url = cursor.getString(cursor.getColumnIndex("url"));
date = cursor.getString(cursor.getColumnIndex("date"));
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd hh:mm;ss");
Date d = new Date(Long.parseLong(date));
time = dateFormat.format(d);
System.out.println(title + url + time);
}
}
}