2012-10-31 2 views
7

私はすべてCall-Logs excluding SMSを取得しようとしていますが、私はマージされたリストを取得します。すべてのログ呼び出しとsmsログを返すコールログ。どのようにすればコールログだけをフィルタリングできますか?

コールのログのみをフィルタリングするにはどうすればよいですか。

私は次のコードを使用しています。

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

私はテストのためにサムスンノート2を使用しています。

+0

私も同じ問題があります。これがsamsungのバグかバリエーションかどうかはわかりません。 – Tushar

答えて

0

私は両方の私のSamsungデバイスで同じ問題を抱えています。この問題を調査することは、それがsamsungがアンドロイドログをどのように処理するかに問題があることを示し、それらをマージします。明らかに、これは不正確で不一致な動作です。 smsメッセージは、通話記録apiから削除することはできませんが、通話記録apiから検索することができます。

0

CallLog.Callsには​​、明確にする、不快にする、発信する、および逃した機能があります。すべてのタイプのCallLog.Callsは、他のレコードも取得します。

コード下記参照:

カーソルmanagedCursor = getActivity()getContentResolver()クエリ(CallLog.Calls.CONTENT_URI、NULL、NULL、NULL、NULL);。。 int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); int name = managedCursor.getColumnIndex(CallLog.Calls.CACHED_NAME); int型= 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; 

        } 
関連する問題