2015-04-24 12 views
6

Vorrei acquisire la cronologia di navigazione di tutti i browser di un telefono Android per gli ultimi (5 o 10) minuti. Il codice che sto usando èCatturare la cronologia di navigazione dai browser Android negli ultimi minuti

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

} 

posso ottenere l'intera cronologia di navigazione dal browser Chrome se cambio

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

a

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

ma ho bisogno la cronologia di navigazione per l'ultimo pochi minuti per aggiornare il database. Sono nuovo nello sviluppo di Android. Qualsiasi aiuto sarebbe molto apprezzato. Grazie in anticipo ..

+0

Qui il problema riguarda il formato dell'ora. Con "Calendar.HOUR" l'orario è in formato 12 ore, quindi l'ho cambiato in "Calendar.HOUR_OF_DAY". Ora sto recuperando la cronologia del browser dal browser Chrome per gli ultimi 5 minuti. La mia prossima domanda: c'è un modo per ottenere la cronologia di navigazione da tutti i browser installati in un particolare dispositivo Android? –

risposta

1

NON è possibile ottenere la cronologia da TUTTI i browser, è solo possibile ottenere la cronologia per il browser predefinito (fornito con il telefono).

L'altro browser utilizza l'ambito privato per mantenere queste informazioni, non ci sono API.

I params per riempire il "?" sul sel bisogno di essere un timestamp (lungo), non un formato gg aaaa/mm /.

Basta fare:

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

Nota: utilizzare String.valueOf per lanciare qualsiasi classe in una stringa, non usare ("" +) potrebbe essere sbagliato, per esempio quando lanciare un galleggiante, il separatore non sarà localizzato (, invece, o viceversa).

Spero che funzioni.

Problemi correlati