Sólo para añadir algunos detalles relacionados con @ReddyLutonadio responder , android.permission.REQUEST_INSTALL_PACKAGES
es la que define qué aplicaciones aparecerán en la lista que has mencionado, y es requerido en Android 8+ para instalar aplicaciones desde otras fuentes que no sean Google Play. Pero este permiso por sí solo no define si la app puede instalar paquetes desconocidos o no. Tiene nivel de protección Signature
:
El sistema concede estos permisos de aplicación en el momento de la instalación, pero sólo cuando la aplicación que intenta utilizar un permiso está firmada por el mismo certificado que la aplicación que define el permiso.
Esto significa que las aplicaciones de los usuarios nunca tendrán este permiso. Las aplicaciones que se permiten en "Settings" > "Apps & Notifications" > "Advanced" > "Special App Access" > "Install unknown apps"
son los que tienen el funcionamiento de AppOps OP_REQUEST_INSTALL_PACKAGES
permitido. También puede comprobarlo desde adb shell
:
~$ appops query-op REQUEST_INSTALL_PACKAGES allow
Los resultados deben ser los mismos que los de Ajustes. Para denegar cualquiera de las aplicaciones:
~$ appops set org.fdroid.fdroid REQUEST_INSTALL_PACKAGES deny
Y aparecerá como Not allowed
en Ajustes.
Otros permisos que se controlan con AppOps se pueden ver con dumpsys package | grep -A100 'AppOp Permissions:' | sed '/^$/q'
.