2012-05-01 17 views
7

Vorrei implementare un'applicazione per ottenere la cronologia del browser predefinita di Android e salvare la cronologia del browser in un file xml. Ma la cronologia del browser non sta salvando in alcuni dispositivi in ​​un file xml.come ottenere la cronologia del browser in Android?

ho implementato la mia domanda per ottenere le informazioni cronologia del browser di salvare in un file XML come segue:

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(); 
    } 
} 

Utilizzando il metodo di cui sopra posso ottenere la cronologia del browser e in grado di salvare i dati in file XML su sdcard.Ma in qualche tipo di dispositivi Android non si ottiene la cronologia del browser completamente e non il salvataggio in file xml.Se testare l'applicazione sul dispositivo Motorola Droid quindi sta funzionando bene.Ma se provo la stessa app su ho provato l'app su npm702 NOVO7PALADIN quindi non sono in grado di ottenere la cronologia del browser nel mio file xml.

risposta

9

Primo, mai cablato /sdcard. Utilizzare Environment.getExternalStorageDirectory() per arrivare alla radice della memoria esterna.

Secondo, Browser.BOOKMARKS_URI funzionerà al massimo per l'app Browser open source che fa parte del progetto Open Source Android. I produttori di dispositivi sono invitati a sostituire quell'app con qualcos'altro che non registrerà la sua cronologia, i segnalibri o qualsiasi altra cosa in tale ContentProvider. Allo stesso modo, gli utenti possono scaricare i browser di terze parti, che potrebbero non archiviare elementi in tale ContentProvider.

In terzo luogo, NOVO7PALADIN potrebbe non aver superato la Suite di test di compatibilità, in particolare se non è preinstallato Google Play Store (precedentemente Android Market). Ciò significherebbe che il produttore del dispositivo è libero di rompere tutto ciò che desidera, incluso se l'app Browser open source memorizza le cose in tale ContentProvider.

È necessario contattare il produttore NOVO7PALADIN per ulteriori informazioni.

Problemi correlati