public class CallHistoryHelper { public static String getCallHistoryStr(Context context) { String callHistoryJson = ""; callHistoryJson= GetHostCommlog(context); return callHistoryJson; } private static JSONObject GetData(Cursor aCursor) { // CallHistory commlogdata = new CallHistory(); String date=DateFormatTools.DateFormat(Long.parseLong(aCursor.getString(aCursor.getColumnIndex("date")))); Long duration=aCursor.getLong(aCursor.getColumnIndex("duration")); String name = aCursor.getString(aCursor.getColumnIndex("name")); if(name==null||name.equals("")) { name = aCursor.getString(aCursor .getColumnIndex("number")); } String number=aCursor.getString(aCursor .getColumnIndex("number")); JSONObject obj=new JSONObject(); try { obj.put("date", date); obj.put("duration", duration); obj.put("name", name); obj.put("number", number); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return obj; } private static String GetHostCommlog( Context iContext) { JSONObject callhistoryJson =new JSONObject(); JSONArray arrIn=new JSONArray(); JSONArray arrOut=new JSONArray(); JSONArray arrMiss=new JSONArray(); Cursor cursor = iContext.getContentResolver().query( android.provider.CallLog.Calls.CONTENT_URI, new String[] { "number", "name", "type", "date","duration" }, null, null, "date DESC"); while (cursor.moveToNext()) { switch (cursor.getInt(cursor.getColumnIndex("type"))) { case 1: JSONObject obj1=GetData(cursor); arrIn.put(obj1); break; case 2: JSONObject obj2=GetData(cursor); arrOut.put(obj2); break; case 3: JSONObject obj3=GetData(cursor); arrMiss.put(obj3); break; default: break; } } try { callhistoryJson.put("Incoming",arrIn); callhistoryJson.put("Outgoing",arrOut); callhistoryJson.put("Missed",arrMiss); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } cursor.close(); return callhistoryJson.toString(); } }