2012-10-31 11 views
7

Próbuję uzyskać wszystkie Call-Logs excluding SMS, ale otrzymuję scaloną listę.Calllogs zwraca wszystkie logi, a także logi sms, w jaki sposób mogę filtrować tylko dzienniki połączeń?

Jak mogę filtrować dzienniki połączeń tylko dla połączeń?

Używam następującego kodu.

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

Używam Samsung Note 2 do testowania.

+0

Mam również ten sam problem. Nie wiem, czy jest to błąd lub odmiany przez samsung. – Tushar

Odpowiedz

0

Mam ten sam problem na obu moich urządzeniach Samsung. Badanie tego problemu wskazuje, że jest to problem z tym, jak samsung obsługuje dzienniki systemu Android, a następnie je łączy. Oczywiście jest to nieprawidłowe i niespójne zachowanie. Uwaga: wiadomości SMS nie można usunąć za pomocą interfejsu API wywołania, ale można ją pobrać za pośrednictwem interfejsu API rejestru połączeń.

0

CallLog.Calls zapewnia funkcję do wyjaśnienia, przychodzące, wychodzące i nieodebrane. Wszystkie rodzaje CallLog.Calls, gdzie jego inne rekordy również.

Poniżej kodu:

kursora managedCursor = getActivity() getContentResolver() zapytanie (CallLog.Calls.CONTENT_URI, zero, zero, zero, zero).. 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; 

        } 
Powiązane problemy