Android O не может принимать трансляцию Intent.ACTION_NEW_OUTGOING_CALL

В моем приложении я могу получить android.intent.action.PHONE_STATE но не могу получить Intent.ACTION_NEW_OUTGOING_CALL на андроиде о. Если я использую Android N или Android M все работает нормально.

Я зарегистрировал первую трансляцию в файле AndroidManifest и вторую в службе переднего плана, но никто из них не может получить Intent.ACTION_NEW_OUTGOING_CALLТолько может получить android.intent.action.PHONE_STATE,

Если кто-нибудь знает как это исправить, выложите пожалуйста свой ответ, заранее спасибо.

2 ответа

Решение

Но я все еще растерялся, потому что мой телефон не просит у меня разрешения, но работает нормально. Может быть, ошибка или особенность Android O?

Это особенность Android O.

Ранее, когда вы запрашиваете разрешение (android.permission.READ_PHONE_STATE) группы разрешений (PHONE) и пользователь дает это, вы можете использовать любое разрешение (android.permission.PROCESS_OUTGOING_CALLS и т.д.) этой группы разрешений (PHONE) свободно (без запроса пользователя).

Теперь с Android O, даже если ваше приложение уже имеет разрешение (android.permission.READ_PHONE_STATE) группы разрешений (PHONE), вам нужно позвонить requestPermission опять за другое разрешение (android.permission.PROCESS_OUTGOING_CALLS) из той же группы. Это не побудит пользователя предоставить разрешение (android.permission.PROCESS_OUTGOING_CALLS) и разрешение будет предоставлено автоматически, если у вас уже есть другое разрешение (android.permission.READ_PHONE_STATE) той же группы разрешений (PHONE).

После некоторого теста я исправляю это, добавив:

ActivityCompat.requestPermissions(activity, Manifest.permission.PROCESS_OUTGOING_CALLS, requestCode)

Но я все еще растерялся, потому что мой телефон не просит у меня разрешения, но работает нормально. Может быть, ошибка или особенность Android O?

Другие вопросы по тегам