2015-04-24 18 views
6

Tôi muốn chụp lịch sử duyệt web của tất cả các trình duyệt trong điện thoại Android trong vài phút cuối (5 hoặc 10) phút. Mã tôi đang sử dụng làChụp lịch sử duyệt web từ các trình duyệt Android trong vài phút cuối cùng

Calendar ci = Calendar.getInstance(); 
String enddate = "" + ci.get(Calendar.YEAR) + "-" 
     + (ci.get(Calendar.MONTH) + 1) + "-" 
     + ci.get(Calendar.DAY_OF_MONTH) + " " + ci.get(Calendar.HOUR) 
     + ":" + ci.get(Calendar.MINUTE) + ":" + ci.get(Calendar.SECOND); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
ci = Calendar.getInstance(); 
ci.add(Calendar.MINUTE, -5); 
String startdate = "" + ci.get(Calendar.YEAR) + "-" 
     + (ci.get(Calendar.MONTH) + 1) + "-" 
     + ci.get(Calendar.DAY_OF_MONTH) + " " + ci.get(Calendar.HOUR) 
     + ":" + ci.get(Calendar.MINUTE) + ":" + ci.get(Calendar.SECOND); 
long startdates = 0; 
long enddates = 0; 
try { 
    Date endDate = (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 
      .parse(enddate); 
    Date startDate = (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 
      .parse(startdate); 
    System.out.println("End date=" + endDate.getTime()); 
    startdates = startDate.getTime(); 
    enddates = endDate.getTime(); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
String[] proj = new String[] { 
     Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL, 
     Browser.BookmarkColumns.DATE 
}; 

Uri uriCustom = Uri 
     .parse("content://com.android.chrome.browser/bookmarks"); 
// 0 = history, 1 = bookmark 
String sel = Browser.BookmarkColumns.BOOKMARK + " = 0" + " AND " 
     + Browser.BookmarkColumns.DATE + " BETWEEN ? AND ?"; 
Cursor mCur = getContentResolver().query(uriCustom, proj, sel, 
     new String[] { 
       "" + startdates, "" + enddates 
     }, null); 
mCur.moveToFirst(); 
JSONObject obj; 
JSONArray jarray = new JSONArray(); 
String title = ""; 
String burl = ""; 
String date_time = ""; 
if (mCur.moveToFirst() && mCur.getCount() > 0) { 
    while (mCur.isAfterLast() == false) { 

     title = mCur.getString(mCur 
       .getColumnIndex(Browser.BookmarkColumns.TITLE)); 
     burl = mCur.getString(mCur 
       .getColumnIndex(Browser.BookmarkColumns.URL)); 
     date_time = mCur.getString(mCur 
       .getColumnIndex(Browser.BookmarkColumns.DATE)); 
     try { 
      obj = new JSONObject(); 
      obj.put("title", title); 
      obj.put("url", burl); 
      obj.put("date", date_time); 
      jarray.put(obj); 
     } catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     mCur.moveToNext(); 
     System.out.println(title); 
    } 

} 

tôi có thể nhận lịch sử toàn bộ duyệt từ trình duyệt chrome nếu tôi thay đổi

String sel = Browser.BookmarkColumns.BOOKMARK + " = 0" +" AND " +Browser.BookmarkColumns.DATE+ " BETWEEN ? AND ?"; // 0 = history, 1 = bookmark 

để

String sel = Browser.BookmarkColumns.BOOKMARK; // 0 = history, 1 = bookmark 

nhưng tôi cần phải lịch sử duyệt web cho người cuối cùng vài phút để cập nhật cơ sở dữ liệu. Tôi mới phát triển Android. Mọi sự trợ giúp sẽ rất được trân trọng. Cảm ơn trước ..

+0

Đây là vấn đề với định dạng thời gian. Với "Calendar.HOUR", thời gian nhận được ở định dạng 12 giờ, sau đó tôi đã thay đổi thành "Calendar.HOUR_OF_DAY". Bây giờ tôi đang nhận được lịch sử trình duyệt từ trình duyệt chrome trong 5 phút cuối cùng. Câu hỏi tiếp theo của tôi: là có cách nào để có được lịch sử duyệt web từ tất cả các trình duyệt được cài đặt trong một thiết bị Android cụ thể? –

Trả lời

1

Bạn KHÔNG THỂ tải lịch sử từ TẤT CẢ các trình duyệt, bạn chỉ có thể tải lịch sử cho trình duyệt mặc định (đi kèm với điện thoại).

Trình duyệt khác sử dụng phạm vi riêng để giữ thông tin này, không có API.

Các params để lấp đầy "?" trên sel cần phải là một dấu thời gian (dài), không phải là một định dạng dd yyyy/mm /.

Chỉ cần làm:

final Calendar ci = Calendar.getInstance(); 
final long endDate = ci.getTimeInMillis(); 
ci.add(Calendar.MINUTE, -5); 
final long startDate = ci.getTimeInMillis(); 
final String[] paramsSel = new String[] { String.valueOf(startDate), String.valueOf(endDate) }; 

Lưu ý: sử dụng String.valueOf bỏ bất kỳ lớp vào một String, không sử dụng ("" +) có thể sai, ví dụ như khi cast một float, tách sẽ không được bản địa hóa (thay vào đó. hoặc ngược lại).

Hy vọng nó hoạt động.

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