2012-05-01 9 views
7

Me gustaría implementar una aplicación para obtener el historial predeterminado del navegador de Android y guardar el historial del navegador en un archivo xml. Pero el historial del navegador no se guarda en algunos dispositivos en un archivo xml.cómo obtener el historial del navegador en android?

me han puesto en práctica mi solicitud para obtener la información de historial del navegador para guardar en el archivo XML de la siguiente manera:

private void browserHistoryDOM() { 
    try{ 
     File newxmlfile = new File("/sdcard/Xmlfiles/briwserHistory.xml"); 
     newxmlfile.createNewFile(); 
     DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 
     Document document = documentBuilder.newDocument(); 
     Element rootElement = document.createElement("root"); 
     document.appendChild(rootElement); 

     Cursor mCur = managedQuery(Browser.BOOKMARKS_URI,Browser.HISTORY_PROJECTION, null, null, null); 
     mCur.moveToFirst(); 

     if (mCur.moveToFirst() && mCur.getCount() > 0) { 
      while (mCur.isAfterLast() == false) { 
       Element em = document.createElement("bookmarkIdx"); 
       em.appendChild(document.createTextNode(mCur.getString(Browser.HISTORY_PROJECTION_BOOKMARK_INDEX))); 
       rootElement.appendChild(em); 

       long callDate = Long.parseLong(mCur.getString(Browser.HISTORY_PROJECTION_DATE_INDEX)); 
       SimpleDateFormat datePattern = new SimpleDateFormat ("dd-MM-yyyy/h:m:s:a"); 
       datePattern.setTimeZone(TimeZone.getTimeZone("GMT")); 
       String date_str = datePattern.format(new Date(callDate)); 

       Element em1 = document.createElement("dateIdx"); 
       em1.appendChild(document.createTextNode(date_str)); 
       rootElement.appendChild(em1); 

       Element em2 = document.createElement("idIdx"); 
       em2.appendChild(document.createTextNode(mCur.getString(Browser.HISTORY_PROJECTION_ID_INDEX))); 
       rootElement.appendChild(em2); 

       Element em3 = document.createElement("titleIdx"); 
       em3.appendChild(document.createTextNode(mCur.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX))); 
       rootElement.appendChild(em3); 

       Element em4 = document.createElement("urlIdx"); 
       em4.appendChild(document.createTextNode(mCur.getString(Browser.HISTORY_PROJECTION_URL_INDEX))); 
       rootElement.appendChild(em4); 

       Element em5 = document.createElement("visitsIdx"); 
       em5.appendChild(document.createTextNode(mCur.getString(Browser.HISTORY_PROJECTION_VISITS_INDEX))); 
       rootElement.appendChild(em5); 

       long searchDate = Long.parseLong(mCur.getString(Browser.SEARCHES_PROJECTION_DATE_INDEX)); 
       SimpleDateFormat datePattern1 = new SimpleDateFormat ("dd-MM-yyyy/h:m:s:a"); 
       datePattern1.setTimeZone(TimeZone.getTimeZone("GMT")); 
       String date_str1 = datePattern.format(new Date(searchDate)); 

       Element em6 = document.createElement("searchDateIdx"); 
       em6.appendChild(document.createTextNode(date_str1)); 
       rootElement.appendChild(em6); 

       Element em7 = document.createElement("searchIdx"); 
       em7.appendChild(document.createTextNode(mCur.getString(Browser.SEARCHES_PROJECTION_SEARCH_INDEX))); 
       rootElement.appendChild(em7); 

       Element em8 = document.createElement("truncateIdIdx"); 
       em8.appendChild(document.createTextNode(mCur.getString(Browser.TRUNCATE_HISTORY_PROJECTION_ID_INDEX))); 
       rootElement.appendChild(em8); 

       Element em9 = document.createElement("truncateOldest"); 
       em9.appendChild(document.createTextNode(mCur.getString(Browser.TRUNCATE_N_OLDEST))); 
       rootElement.appendChild(em9); 

       mCur.moveToNext(); 
      } 
     } 

     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 
     DOMSource source = new DOMSource(document); 
     StreamResult result = new StreamResult(newxmlfile); 
     transformer.transform(source, result); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Al utilizar el método anterior que pueda obtener el historial del navegador y es capaz de guardar los datos en un archivo XML en sdcard.Pero en algún tipo de dispositivo Android no se obtiene el historial del navegador completamente y no se guarda en el archivo xml. Si pruebo la aplicación en el dispositivo Droid de Motorola, funciona bien. Pero si pruebo la misma aplicación, la he probado. en npm702 NOVO7PALADIN, entonces no puedo obtener el historial del navegador en mi archivo xml.

Respuesta

9

En primer lugar, nunca hardwire /sdcard. Use Environment.getExternalStorageDirectory() para llegar a la raíz del almacenamiento externo.

En segundo lugar, Browser.BOOKMARKS_URI, a lo sumo, funcionará para la aplicación de navegador de código abierto que es parte del Android Open Source Project. Los fabricantes de dispositivos pueden reemplazar esa aplicación por otra cosa que no registre su historial, marcadores o cualquier otra cosa en ese ContentProvider. Del mismo modo, los usuarios pueden descargar navegadores de terceros, que pueden no almacenar cosas en ese ContentProvider.

En tercer lugar, es posible que NOVO7PALADIN haya pasado el paquete de prueba de compatibilidad, particularmente si no tiene preinstalado el Google Play Store (anteriormente Android Market). Eso significaría que el fabricante del dispositivo puede romper todo lo que quiera, incluso si la aplicación del navegador de código abierto almacena cosas en ese ContentProvider.

Deberá ponerse en contacto con el fabricante NOVO7PALADIN para obtener más información.

Cuestiones relacionadas