Android浏览历史记录只留下一些网站

使用下面的function,我试图获取用户在其Android手机上从Chrome浏览器访问的最新url。 此function适用于大多数站点,但不适用于“www.reddit.com”。

如果我访问“www.google.com”,“www.hulu.com”或“www.kayak.com”,则下面的urlvariables会更新,但如果我转到“www.reddit.com”,则不会更新

如果我去“m.reddit.com”它更新。 与facebook相同的问题,检测m.facebook.com但不是www.facebook.com

我不明白Android记录一个而不是另一个的“www.reddit.com”和“m.reddit.com”之间有什么区别。

我需要在代码中进行哪些更改才能检测到所有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; } 

我调试的更多信息:

  • 当我在Genymotion仿真器上尝试这个时,所有网站(包括www.reddit.com等网站www.reddit.com被检测到了)。 在真正的手机www.reddit.com上没有检测到。
  • 代码将检测到的网站确定: www.kayak.com' (redirects to www.kayak.com/mn ), www.hulu.com (loads mobile version of site though url stays www.hulu.com), www.google。 com`(与hulu相同的故事)。

似乎加载网站的纯桌面版本的网站不会被检测到

Solutions Collecting From Web of "Android浏览历史记录只留下一些网站"

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

查看我从真正的N7100 galaxy note2和我的Windows浏览器中截取的以下屏幕截图:

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

另一种解决方案是覆盖由于XSS策略而无法工作的重定向方法。

所以更好的解决方案是伪造您的浏览器并说服服务器您正在使用桌面浏览器检查此答案

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