2012-05-01 26 views
7

アンドロイドのデフォルトのブラウザ履歴を取得し、ブラウザの履歴をxmlファイルに保存するアプリケーションを実装したいと思います。ブラウザの履歴は一部のデバイスでxmlファイルに保存されていません。アンドロイドでブラウザ履歴を取得する方法は?

私は次のようにXMLファイルに保存するには、ブラウザの履歴情報を取得のために自分のアプリケーションを実装している

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

上記の方法を使用することにより、私は、ブラウザの履歴を取得し、XMLファイルにデータを保存することができますしかし、いくつかのアンドロイドデバイスでは、ブラウザの履歴が完全には取得されず、xmlファイルに保存されません。私はMotorola Droidデバイスでアプリをテストすると、それは正常に動作しています。しかし、私は、 npm702 NOVO7PALADINで、私はxmlファイルでブラウザ履歴を取得できません。

答えて

9

まず、絶対にハードワイヤー/sdcard。外部ストレージのルートに移動するには、Environment.getExternalStorageDirectory()を使用します。

第2に、Browser.BOOKMARKS_URIは、ほとんどの場合、Androidオープンソースプロジェクトの一部であるオープンソースブラウザアプリで動作します。デバイスメーカーはそのアプリを、ContentProviderにその履歴、ブックマークなどを記録しないものに置き換えることを歓迎します。同様に、ユーザーはサードパーティ製のブラウザをダウンロードすることができますが、そのブラウザにはContentProviderというものが格納されていない可能性があります。

第3に、NOVO7PALADINは、特にGoogle Playストア(旧Android Market)がプリインストールされていない場合、互換性テストスイートに合格していない可能性があります。これは、デバイスメーカーが、オープンソースのブラウザアプリがその内容をContentProviderに保存するかどうかなど、自分が望む何かを壊すことを歓迎することを意味する。

詳細については、NOVO7PALADINの製造元にお問い合わせください。

関連する問題