Calllogs возвращает все вызовы журналов, а также журналы sms, как я могу фильтровать только журналы вызовов?

Я пытаюсь получить все Call-Logs excluding 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 ); 

Я использую Samsung Note 2 для тестирования.

У меня такая же проблема на обоих моих устройствах samsung. Исследование этой проблемы указывает на то, что проблема связана с тем, как samsung обрабатывает журналы android, они объединяют их. Очевидно, это неправильное и непоследовательное поведение. Примечание. Sms-сообщение не может быть удалено в журнале вызовов api, но оно может быть извлечено через журнал вызовов api.

CallLog.Calls предоставляет функцию для уточнения, Incomming, Outgoing и Missed. Весь тип CallLog.Calls, где он также получает другие записи.

См. Ниже код:

Cursor managedCursor = getActivity (). GetContentResolver (). Query (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; } 
Intereting Posts
Создание целочисленного массива идентификаторов ресурсов Использование checkCallingOrSelfPermission () для атаки эскалации привилегий Класс библиотеки предупреждений proguard android.webkit.WebView зависит от класса программы android.webkit.WebViewClien Crouton зависит от библиотек, но не является самой библиотекой Почему TabActivity устарела (причина)? LibGDX – масштабированное изображение с фиксированным соотношением Android.mk LOCAL_MODULE_FILENAME не должно содержать расширений Camera.open () не работает. Фатальный сигнал без исключения Уведомления о платной базе Android RecyclerView: измените файл макета LIST на GRID onOptionItemSelected График активности кинжала и отдельные модули Ошибка приложения при использовании функции SherlockFragmentActivity Не удалось запустить AVD (Android Virtual Device) в Android Studio (на Mac) Не удалось загрузить файл, созданный моим приложением на Google Диске, но может получить метаданные этого файла