2012-10-31 48 views
7

Tôi đang cố gắng để có được tất cả các Call-Logs excluding SMS nhưng tôi nhận được một danh sách hợp nhất.Calllog trả về tất cả các cuộc gọi nhật ký cũng như nhật ký sms, làm cách nào để tôi chỉ có thể lọc nhật ký cuộc gọi?

Tôi làm cách nào để lọc nhật ký cuộc gọi chỉ cho cuộc gọi?

Tôi đang sử dụng mã sau đây.

String[] strFields = { 
      android.provider.CallLog.Calls.NUMBER, 
      android.provider.CallLog.Calls.TYPE, 
      android.provider.CallLog.Calls.CACHED_NAME, 
      android.provider.CallLog.Calls.CACHED_NUMBER_TYPE, 
      android.provider.CallLog.Calls.DATE 
}; 
String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 

Uri calluri = Uri.parse("content://call_log/calls"); 
Cursor mCallCursor = getContentResolver().query(
      calluri, 
      strFields, 
      null, 
      null, 
      strOrder 
); 

Tôi đang sử dụng Samsung Note 2 để thử nghiệm.

+0

Tôi cũng gặp vấn đề tương tự. Không biết nếu đây là lỗi hoặc biến thể của samsung. – Tushar

Trả lời

0

Tôi gặp vấn đề tương tự trên cả hai thiết bị samsung của mình. Nghiên cứu vấn đề này cho thấy nó là vấn đề với cách samsung xử lý các bản ghi android, nó kết hợp chúng. Rõ ràng đây là hành vi không chính xác và không nhất quán. Lưu ý, một tin nhắn sms không thể bị xóa thông qua api nhật ký cuộc gọi, nhưng nó có thể được truy xuất thông qua api nhật ký cuộc gọi.

0

CallLog.Calls cung cấp tính năng để làm rõ, Incomming, Outgoing and Missed. Tất cả các loại CallLog.Calls, nơi nó có được hồ sơ khác cũng có.

Xem bên dưới mã:

Cursor managedCursor = getActivity() getContentResolver() truy vấn (CallLog.Calls.CONTENT_URI, null, null, null, null);.. int number = managedCursor.getColumnIndex (CallLog.Calls.NUMBER); int name = managedCursor.getColumnIndex (CallLog.Calls.CACHED_NAME); int type = managedCursor.getColumnIndex (CallLog.Calls.TYPE); int date = managedCursor.getColumnIndex (CallLog.Calls.DATE); int newcall = managedCursor.getColumnIndex (CallLog.Calls.NEW); int callduration = managedCursor.getColumnIndex (CallLog.Calls.DURATION); int id = managedCursor.getColumnIndex (CallLog.Calls._ID);

 while (managedCursor.moveToNext()) { 
      callNumber = managedCursor.getString(number); 
      callName = managedCursor.getString(name); 
      callType = managedCursor.getString(type); 
      callDate = managedCursor.getString(date); 
      isCallNew = managedCursor.getString(newcall); 
      Date callDayTime = new Date(Long.valueOf(callDate)); 
      duration = managedCursor.getString(callduration); 
      contactId = managedCursor.getString(id); 

     // process log data... 
       Log.i("Call Name-----", callNumber); 
       String cType = null; 

       int cTypeCode = Integer.parseInt(callType); 

       switch(cTypeCode) 
        { 
          case CallLog.Calls.OUTGOING_TYPE: 
          cType = "OUTGOING"; 
          break; 

          case CallLog.Calls.INCOMING_TYPE: 
          cType= "INCOMING"; 
          break; 

          case CallLog.Calls.MISSED_TYPE: 
          cType = "MISSED"; 
          break; 

        } 
Các vấn đề liên quan