2012-05-01 37 views
7

Tôi muốn triển khai ứng dụng để tải lịch sử trình duyệt mặc định của Android và lưu lịch sử trình duyệt vào tệp xml. Nhưng lịch sử trình duyệt không lưu vào một số thiết bị vào tệp xml.cách tải lịch sử trình duyệt trong Android?

tôi đã thực hiện ứng dụng của tôi cho có được các thông tin lịch sử trình duyệt để lưu vào file xml như sau:

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

Bằng cách sử dụng các phương pháp trên tôi có thể lấy lịch sử trình duyệt và có khả năng lưu dữ liệu vào tập tin xml trên sdcard.But trong một số loại thiết bị Android không nhận được lịch sử trình duyệt hoàn toàn và không lưu vào tập tin xml. Nếu tôi kiểm tra các ứng dụng trên thiết bị Motorola Droid thì nó đang làm việc tốt.Nhưng nếu tôi kiểm tra cùng một ứng dụng trên tôi đã thử nghiệm ứng dụng trên npm702 NOVO7PALADIN sau đó tôi không thể nhận được lịch sử trình duyệt trong tệp xml của tôi.

Trả lời

9

Đầu tiên, không bao giờ dây cứng /sdcard. Sử dụng Environment.getExternalStorageDirectory() để truy cập thư mục gốc của bộ nhớ ngoài.

Thứ hai, Browser.BOOKMARKS_URI sẽ, tối đa, làm việc cho ứng dụng Trình duyệt nguồn mở là một phần của Dự án nguồn mở Android. Nhà sản xuất thiết bị được hoan nghênh thay thế ứng dụng đó bằng một thứ gì đó khác sẽ không ghi lại lịch sử, dấu trang hoặc bất kỳ thứ gì khác trong đó ContentProvider. Tương tự, người dùng được phép tải xuống các trình duyệt của bên thứ ba, có thể không lưu trữ những thứ trong đó ContentProvider.

Thứ ba, NOVO7PALADIN có thể không vượt qua Bộ kiểm tra tương thích, đặc biệt nếu nó không có Cửa hàng Google Play (trước đây là Android Market) được cài đặt sẵn. Điều đó có nghĩa là nhà sản xuất thiết bị được chào đón phá vỡ bất cứ thứ gì họ muốn, bao gồm việc ứng dụng Trình duyệt nguồn mở có lưu trữ mọi thứ trong số đó ContentProvider hay không.

Bạn cần liên hệ với nhà sản xuất NOVO7PALADIN để tìm hiểu thêm.

Các vấn đề liên quan