Android-9 CallLog: CACHED_NAME и CACHED_PHOTO_URI всегда возвращают NULL из CallLog - PullRequest
0 голосов
/ 09 апреля 2019

У меня было приложение, в котором я взял журнал вызовов и список контактов и показал их в 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?

1 Ответ

0 голосов
/ 09 апреля 2019

Пожалуйста, проверьте, если требуется RuntimePermission для CALL_LOG GROUP.Потому что они сделали некоторые изменения на Android-9

...