Historial de navegación de Android dejando fuera solo algunos sitios


Usando la función a continuación, estoy tratando de obtener la ÚLTIMA url que el usuario visitó desde el navegador Chrome en su teléfono Android. Esta función funciona muy bien para la mayoría de los sitios, pero no funciona para "www.reddit.com".

La variable url se actualiza si voy a "www.google.com", "www.hulu.com" o "www.kayak.com" pero no actualizará si voy a "www.reddit.com".

Se actualiza si voy a "m.reddit.com". Mismo problema con facebook, detecta m.facebook.com pero no www.facebook.com.

No entiendo cuál es la diferencia entre "www.reddit.com" y "m.reddit.com" ese Androide graba uno pero no el otro.

¿Qué cambio necesito en el código para detectar TODOS LOS ACCESOS 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;
}

Algo más de información de mi depuración:

  • Cuando pruebo esto en un emulador de Genymotion, todos los sitios web (incluidos sitios como www.reddit.com se detectan bien). En un teléfono real www.reddit.com no consigue detectar.
  • Sitios el código detectará OK: 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 ' (la misma historia que el hulu).

Parece que los sitios que cargan la versión de escritorio puro del sitio, no se detectan

Author: user1406716, 2015-04-21

1 answers

Esto se debe a que nunca visita el dominio de escritorio en su móvil , en realidad cada vez que visita facebook en su móvil ( o cualquier otro sitio web que detecte su navegador ) lo redireccionará automáticamente al sitio web móvil , las redirecciones no se guardarán en el historial a menos que se cargue la página , lo que nunca sucede.

Compruebe la siguiente captura de pantalla tomada de mi verdadero N7100 galaxy note2 y mi navegador de Windows:

Si está utilizando el navegador Chrome, puede solicitar el escritorio sitio web (que no es una solución confiable ya que el usuario tendrá que hacer esto manualmente ).

Otra solución es anular el método de redirección que no funcionará debido a XSS política.

Así que una mejor solución es falsificar su navegador y convencer al servidor de que está utilizando un navegador de escritorio compruebe esto respuesta .

El simulador en el escritorio utiliza el agente de usuario del dispositivo que contará como navegador de escritorio. pantallazo

 8
Author: ProllyGeek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:26:56