2015-04-24 6 views
6

Ich möchte Browserverlauf aller Browser in einem Android-Handy für die letzten paar Minuten (5 oder 10) erfassen. Der Code, den ich verwende, istErfassen Browserverlauf von Android-Browsern für die letzten paar Minuten

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

} 

kann ich den ganzen Browserverlauf von Chrome-Browser, wenn i

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

zu

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

aber ich brauche den Browser-Verlauf für die letzten einige Minuten, um die Datenbank zu aktualisieren. Ich bin neu in der Entwicklung von Android. Jede Hilfe würde sehr geschätzt werden. Vielen Dank im Voraus ..

+0

Hier ist das Problem mit dem Zeitformat. Bei "Calendar.HOUR" ist die Uhrzeit im 12-Stunden-Format, dann habe ich dies in "Calendar.HOUR_OF_DAY" geändert. Jetzt bekomme ich Browser-Verlauf von Chrome Browser für die letzten 5 Minuten. Meine nächste Frage: Gibt es eine Möglichkeit, den Browserverlauf von allen in einem bestimmten Android-Gerät installierten Browsern zu erhalten? –

Antwort

1

Sie können nicht die Geschichte von allen Browsern erhalten, können Sie nur die Geschichte für den Standard-Browser (der mit dem Telefon kam).

Der andere Browser verwendet privaten Bereich, um diese Informationen zu behalten, gibt es keine API.

Die params die "?" auf sel Notwendigkeit zu füllen einen Zeitstempel (long), kein yyyy/mm/dd Format.

Just do:

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

Anmerkung: Mit String.valueOf jede Klasse in einen String zu werfen, nicht verwenden ("" +) könnte falsch sein, zum Beispiel wenn ein Schwimmer gegossen, das Trenn wird nicht lokalisiert (, stattdessen oder umgekehrt).

Ich hoffe, es funktioniert.

Verwandte Themen