2015-04-24 11 views
6

Chciałbym przechwycić historię przeglądania wszystkich przeglądarek w telefonie z Androidem przez kilka ostatnich (5 lub 10) minut. Kod używam jestPrzechowywanie historii przeglądania w przeglądarkach z Androidem przez kilka ostatnich minut

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

} 

mogę dostać całą historię przeglądania z przeglądarki Chrome w przypadku zmiany

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

do

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

ale muszę historię przeglądania za ostatni kilka minut na aktualizację bazy danych. Jestem nowy w rozwoju Androida. Każda pomoc będzie wielce ceniona. Z góry dzięki ..

+0

Tutaj problem dotyczy formatu czasu. W "Calendar.HOUR" czas pobierania jest w formacie 12-godzinnym, a następnie zmieniłem go na "Kalendarz.HOUR_OF_DAY". Teraz otrzymuję historię przeglądarki z przeglądarki Chrome przez ostatnie 5 minut. Moje następne pytanie: czy istnieje sposób na pobranie historii przeglądania ze wszystkich przeglądarek zainstalowanych na danym urządzeniu z Androidem? –

Odpowiedz

1

NIE MOŻNA uzyskać historii od WSZYSTKICH przeglądarek, wystarczy pobrać historię dla domyślnej przeglądarki (która została dostarczona z telefonem).

Druga przeglądarka używa prywatnego zakresu, aby zachować te informacje, nie ma interfejsu API.

params, aby wypełnić "?" na sel trzeba być timestamp (długa), a nie w formacie rrrr/mm/dd.

Wystarczy zrobić:

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

Uwaga: Należy używać String.valueOf oddać dowolną klasę String, nie używać („” +) może być nie tak, na przykład, kiedy rzucić pływak, separator nie będzie lokalny (zamiast tego lub viceversa).

Mam nadzieję, że to działa.

Powiązane problemy