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?