Так как это возможно?
Для них возможно иметь этот элемент в своем манифесте, потому что их разработчики могли его набрать.
То, что приложение имеет элемент <uses-permission>
, не означает, что они получают разрешение. Это зависит от многих факторов, включая protectionLevel
.
В конкретном случае REQUEST_INSTALL_PACKAGES
это не имеет значения signature
для protectionLevel
. Имеет signature|appop
. appop
- сбивающее с толку значение, но оно сводится к тому, что «есть странные способы, которыми приложение может использовать разрешение». В этом случае установщик пакета на Android 8.0+ полностью отклонит любое приложение, которое не запрашивает это разрешение и пытается использовать ACTION_VIEW
или ACTION_INSTALL_PACKAGE
. В противном случае пользователю будет предложено подтвердить, что это приложение может запросить установку пакетов.
Примечание: часть |appop
не отображается в JavaDocs, но отображается в манифесте платформы, что важно во время выполнения.