2015-04-24 5 views
6

मैं पिछले कुछ (5 या 10) मिनटों के लिए एंड्रॉइड फोन में सभी ब्राउज़रों के ब्राउज़िंग इतिहास को कैप्चर करना चाहता हूं। कोड मैं का उपयोग कर रहा हैपिछले कुछ मिनटों के लिए एंड्रॉइड ब्राउज़र से ब्राउज़िंग इतिहास कैप्चर करना

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

} 

अगर मैं

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 

लिए, लेकिन मैं पिछले के लिए ब्राउज़िंग इतिहास की जरूरत है मैं क्रोम ब्राउज़र से पूरी ब्राउज़िंग इतिहास प्राप्त कर सकते हैं डेटाबेस अद्यतन करने के लिए कुछ मिनट। मैं एंड्रॉइड विकास के लिए नया हूँ। किसी भी तरह की सहायता का स्वागत किया जाएगा। अग्रिम धन्यवाद ..

+0

यहां समस्या समय प्रारूप के साथ है। "कैलेंडर.एचओआर" के साथ समय 12 घंटे प्रारूप में है, तो मैंने इसे "कैलेंडर। HOUR_OF_DAY" में बदल दिया। अब मुझे पिछले 5 मिनट के लिए क्रोम ब्राउज़र से ब्राउजर इतिहास मिल रहा है। मेरा अगला प्रश्न: क्या किसी विशेष एंड्रॉइड डिवाइस में स्थापित सभी ब्राउज़रों से ब्राउज़िंग इतिहास प्राप्त करने का कोई तरीका है? –

उत्तर

1

आप सभी ब्राउज़रों से इतिहास नहीं प्राप्त कर सकते हैं, आप केवल डिफ़ॉल्ट ब्राउज़र (जो फोन के साथ आए थे) के लिए इतिहास प्राप्त कर सकते हैं।

अन्य ब्राउज़र इस जानकारी को रखने के लिए निजी दायरे का उपयोग करते हैं, कोई एपीआई नहीं है।

पैरामीटर "?" पर sel एक टाइमस्टैम्प (लंबी), नहीं एक yyyy/mm/dd प्रारूप होने की जरूरत को भरने के लिए।

बस कार्य करें:

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

नोट: String.valueOf का प्रयोग कर एक स्ट्रिंग के लिए किसी भी वर्ग कास्ट करने के लिए, जब एक नाव डाली उपयोग नहीं करते ("" +) गलत हो सकता है, उदाहरण के लिए, विभाजक स्थानीयकृत नहीं किया जाएगा (, बजाय। या उपाध्यक्ष)।

आशा है कि यह काम करता है।

संबंधित मुद्दे