История просмотра Android, оставляющая только некоторые сайты
Используя приведенную ниже функцию, я пытаюсь получить LAST-url, который пользователь посетил из браузера Chrome на своем Android-телефоне. Эта функция работает очень хорошо для большинства сайтов, но не работает для "www.reddit.com" .
Переменная url
ниже обновляется, если я перехожу на "www.google.com", "www.hulu.com" или "www.kayak.com", но будет не обновлять, если я перейдите на страницу "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' (redirects to
www.kayak.com/mn ),
www.hulu.com (loads mobile version of site though url stays www.hulu.com),
www.google.com` (та же история, что и hulu).
Похоже, что сайты, загружающие чистую версию рабочего стола сайта, не обнаруживаются
Ответы
Ответ 1
Это связано с тем, что вы никогда не посещаете рабочий стол на своем мобильном телефоне, фактически каждый раз, когда вы посещаете facebook на своем мобильном устройстве (или на любом другом веб-сайте, который обнаруживает ваш навигатор), он автоматически перенаправляет вас на мобильный сайт, перенаправления не будут сохранены в истории, если страница не загружается, что никогда не происходит.
Проверьте следующий снимок экрана, взятый из моей истинной галактики N7100 note2 и моего браузера Windows:
Если вы используете Chrome-браузер, вы можете запросить веб-сайт на рабочем столе (который не является надежным решением, так как пользователю придется делать это вручную).
другое решение - переопределить метод перенаправления, который не будет работать из-за XSS.
поэтому лучшим решением является подделка вашего браузера и убеждение сервера, что вы используете настольный браузер, проверить этот ответ.
Симулятор на рабочем столе использует пользовательский агент устройства, который будет считаться браузером рабочего стола.
![screenshot]()