У меня было приложение, в котором я взял журнал вызовов и список контактов и показал их в RecyclerView.Все шло хорошо до андроида-8.Внезапно я обнаружил, что имена не отображаются на устройстве Android-9.Затем отладка показывает, что CACHED_NAME и CACHED_PHOTO_URI всегда возвращают ноль на 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?