У меня было приложение, в котором я извлекал журнал вызовов и список контактов и показывал их в RecyclerView. Все шло нормально до андроида-8. Внезапно я обнаружил, что имена не отображаются на устройстве Android-9. Затем отладка показывает, что CACHED_NAME и CACHED_PHOTO_URI всегда возвращают значение null на andorid-9. Я получаю NUMBER, DURATION и все остальное очень хорошо, только CACHED_NAME и CACHED_PHOTO_URI отсутствуют.
Я проверил журнал изменений Android-9, правильно обработал разрешение журнала вызовов, я прилагаю свои разрешения из манифеста с этим вопросом. Мое приложение также правильно использует разрешения во время выполнения. Я также проверил это в настройках устройства. Кроме того, мое приложение также установлено как приложение для телефона по умолчанию.
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
String name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));
Log.d("tag", "name: " + (name == null ? "null": name));
String date = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DATE));
String duration = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DURATION));
String photoUri = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_PHOTO_URI));
Log.d("tag", "photoUri: " + (photoUri == null ? "null": photoUri));
String subscription_id = cursor.getString(cursor.getColumnIndex(CallLog.Calls.PHONE_ACCOUNT_ID));
String subscription_component_name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.PHONE_ACCOUNT_COMPONENT_NAME));
Он отлично работает на Android 8 и ниже, может ли кто-нибудь сказать мне, в чем проблема с Android-9?