我正在使用以下函数尝试获取用户在其Android手机上使用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;
}
从我的调试信息中,还有一些额外的信息:
- 当我在Genymotion模拟器上尝试时,所有网站(包括像
www.reddit.com
这样的网站)都能被正确检测到。但在真实手机上,www.reddit.com
无法被检测到。 - 代码可以正常检测到的网站:
www.kayak.com' (重定向到
www.kayak.com/mn),
www.hulu.com(加载移动站点版本,但url仍然是www.hulu.com),
www.google.com` (与hulu相同的故事)。
看起来那些加载纯桌面版本的网站无法被检测到
<link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.reddit.com/" />
和<link rel="alternate" media="handheld" href="https://m.facebook.com/" />
,而在其他你提到的页面中却不存在? - scraaappy