Android 浏览历史只遗漏了一些网站

Android Browsing history leaving out some sites only

使用下面的函数,我试图获取用户在 Android Phone 上从 Chrome 浏览器访问的最后一个 url。此功能适用于大多数站点,但不适用于 "www.reddit.com".

如果我转到 "www.google.com"、"www.hulu.com" 或 "www.kayak.com",下面的 url 变量会更新,但如果 不会更新 我去 "www.reddit.com".

如果我转到 "m.reddit.com",它 更新。与 facebook 相同的问题,检测到 m.facebook.com 但未检测到 www.facebook.com.

不明白 "www.reddit.com" 和 "m.reddit.com" 有什么区别 Android 记录一个而不记录另一个

我需要对代码进行哪些更改才能检测到所有 URL 访问?

public String returnLastChromeURL(int browserCode) {
    String[] proj = new String[] { Browser.BookmarkColumns.DATE,
            Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL };

    String dateTime;
    Uri uriCustom = Uri
            .parse("content://com.android.chrome.browser/bookmarks");
    String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history,
                                                            // 1 = bookmark
    try {
    Cursor mCur = mContext.getContentResolver().query(uriCustom, proj, sel,
            null, BookmarkColumns.DATE + " ASC");
    mCur.moveToFirst();
    mCur.moveToLast();

        dateTime = mCur.getString(mCur
                .getColumnIndex(Browser.BookmarkColumns.DATE));
        title = mCur.getString(mCur
                .getColumnIndex(Browser.BookmarkColumns.TITLE));
        url = mCur.getString(mCur
                .getColumnIndex(Browser.BookmarkColumns.URL));

        mCur.close();
    } catch (Exception e) {
        dateTime = String.valueOf(System.currentTimeMillis());
        title = "";
        url = "empty_list";
    }

    return url;
}

来自我的调试的更多信息:

似乎加载纯桌面版网站的网站未被检测到

这是因为您从未在手机上访问桌面域,实际上每次您在手机上访问 facebook(或任何其他检测到您的导航器的网站)时,它都会自动将您重定向到移动网站,重定向不会除非页面加载,否则将保存在历史记录中,这种情况永远不会发生。

检查以下截取自我的真实 N7100 galaxy note2 和我的 windows 浏览器的屏幕截图:

如果您使用 chrome 浏览器,您可以请求桌面网站(这不是一个可靠的解决方案,因为用户必须手动执行此操作)。

另一个解决方案是覆盖重定向方法,由于 XSS 政策,该方法将不起作用。

因此,更好的解决方案是伪造您的浏览器并让服务器相信您使用的是桌面浏览器,请检查此 answer

桌面上的模拟器使用设备用户代理,这将被视为桌面浏览器。