【问题标题】:Capturing browsing history from android browsers for the last few minutes捕获过去几分钟内来自 android 浏览器的浏览历史记录
【发布时间】:2015-04-24 11:49:13
【问题描述】:

我想捕捉 Android 手机中所有浏览器在过去几分钟(5 或 10 分钟)内的浏览历史记录。我使用的代码是

Calendar ci = Calendar.getInstance();
String enddate = "" + ci.get(Calendar.YEAR) + "-"
        + (ci.get(Calendar.MONTH) + 1) + "-"
        + ci.get(Calendar.DAY_OF_MONTH) + " " + ci.get(Calendar.HOUR)
        + ":" + ci.get(Calendar.MINUTE) + ":" + ci.get(Calendar.SECOND);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ci = Calendar.getInstance();
ci.add(Calendar.MINUTE, -5);
String startdate = "" + ci.get(Calendar.YEAR) + "-"
        + (ci.get(Calendar.MONTH) + 1) + "-"
        + ci.get(Calendar.DAY_OF_MONTH) + " " + ci.get(Calendar.HOUR)
        + ":" + ci.get(Calendar.MINUTE) + ":" + ci.get(Calendar.SECOND);
long startdates = 0;
long enddates = 0;
try {
    Date endDate = (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
            .parse(enddate);
    Date startDate = (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
            .parse(startdate);
    System.out.println("End date=" + endDate.getTime());
    startdates = startDate.getTime();
    enddates = endDate.getTime();
} catch (ParseException e) {
    e.printStackTrace();
}
String[] proj = new String[] {
        Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL,
        Browser.BookmarkColumns.DATE
};

Uri uriCustom = Uri
        .parse("content://com.android.chrome.browser/bookmarks");
// 0 = history, 1 = bookmark
String sel = Browser.BookmarkColumns.BOOKMARK + " = 0" + " AND "
        + Browser.BookmarkColumns.DATE + " BETWEEN ? AND ?";
Cursor mCur = getContentResolver().query(uriCustom, proj, sel,
        new String[] {
                "" + startdates, "" + enddates
        }, null);
mCur.moveToFirst();
JSONObject obj;
JSONArray jarray = new JSONArray();
String title = "";
String burl = "";
String date_time = "";
if (mCur.moveToFirst() && mCur.getCount() > 0) {
    while (mCur.isAfterLast() == false) {

        title = mCur.getString(mCur
                .getColumnIndex(Browser.BookmarkColumns.TITLE));
        burl = mCur.getString(mCur
                .getColumnIndex(Browser.BookmarkColumns.URL));
        date_time = mCur.getString(mCur
                .getColumnIndex(Browser.BookmarkColumns.DATE));
        try {
            obj = new JSONObject();
            obj.put("title", title);
            obj.put("url", burl);
            obj.put("date", date_time);
            jarray.put(obj);
        } catch (Exception e)
        {
            e.printStackTrace();
        }
        mCur.moveToNext();
        System.out.println(title);
    }

}

如果我更改,我可以从 chrome 浏览器获取整个浏览历史记录

String sel = Browser.BookmarkColumns.BOOKMARK + " = 0" +" AND " +Browser.BookmarkColumns.DATE+ " BETWEEN ? AND ?"; // 0 = history, 1 = bookmark 

String sel = Browser.BookmarkColumns.BOOKMARK; // 0 = history, 1 = bookmark

但我需要最近几分钟的浏览历史来更新数据库。我是android开发的新手。任何帮助将不胜感激。提前谢谢..

【问题讨论】:

  • 这里的问题在于时间格式。使用“Calendar.HOUR”,获取时间为 12 小时格式,然后我将其更改为“Calendar.HOUR_OF_DAY”。现在我正在从 chrome 浏览器获取过去 5 分钟的浏览器历史记录。我的下一个问题:有没有办法从安装在特定 android 设备中的所有浏览器中获取浏览历史记录?

标签: android browser-history


【解决方案1】:

您无法从所有浏览器中获取历史记录,您只能获取默认浏览器(手机随附)的历史记录。

其他浏览器使用私有范围来保存此信息,没有 API。

sel 上填写“?”的参数需要是时间戳(长),而不是 yyyy/mm/dd 格式。

只要做:

final Calendar ci = Calendar.getInstance();
final long endDate = ci.getTimeInMillis();
ci.add(Calendar.MINUTE, -5);
final long startDate = ci.getTimeInMillis();
final String[] paramsSel = new String[] { String.valueOf(startDate), String.valueOf(endDate) };

注意:使用 String.valueOf 将任何类强制转换为字符串,不要使用 (""+) 可能会出错,例如当强制转换浮点数时,分隔符不会被本地化 (,而是 . 或反之亦然)。

希望它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-14
    • 2013-05-21
    • 2011-02-04
    • 1970-01-01
    • 2013-11-18
    • 2012-05-08
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多