2012-10-31 51 views
7

Sto cercando di ottenere tutto il Call-Logs excluding SMS ma ottengo un elenco unito.Calllogs che restituiscono tutte le chiamate dei registri e i registri sms, come posso filtrare solo i registri delle chiamate?

Come posso filtrare i registri delle chiamate solo per le chiamate?

Sto usando il seguente codice.

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

Sto utilizzando Samsung Note 2 per i test.

+0

Ho anche lo stesso problema. Non so se questo sia un bug o una variazione da parte di Samsung. – Tushar

risposta

0

Ho lo stesso problema su entrambi i miei dispositivi Samsung. La ricerca di questo problema indica che è un problema con il modo in cui Samsung gestisce i log di Android, li unisce. Ovviamente questo è un comportamento scorretto e incoerente. Nota: un messaggio sms non può essere cancellato attraverso il registro delle chiamate, ma può essere recuperato tramite il registro delle chiamate.

0

CallLog.Calls fornisce funzionalità per chiarire, Incomming, In uscita e Perse. Tutto il tipo di CallLog.Calls in cui anche altri record.

Qui sotto codice:

cursore managedCursor = getActivity() getContentResolver() query (CallLog.Calls.CONTENT_URI, null, null, null, null);.. numero int = managedCursor.getColumnIndex (CallLog.Calls.NUMBER); int name = managedCursor.getColumnIndex (CallLog.Calls.CACHED_NAME); int type = managedCursor.getColumnIndex (CallLog.Calls.TYPE); int data = 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; 

        } 
Problemi correlati