Normalmente, si tengo que instalar un apk (por ejemplo, desde la tarjeta SD), necesito habilitar "Fuentes desconocidas" en la configuración de mi teléfono. Pero cuando transfiero e instalo cualquier APK desde otro teléfono usando "ShareIt", mi teléfono no requiere tal permiso.
¿Cómo puede ShareIt omitir este permiso?
Respuestas:
Investigué un poco y es posible sin los permisos del sistema desde API 21 en adelante https://developer.android.com/reference/android/content/pm/PackageInstaller.html .
De hecho, hay un ejemplo de código de Google que muestra cómo hacerlo. https://github.com/googlesamples/android-testdpc/blob/master/app/src/main/java/com/afwsamples/testdpc/cosu/CosuUtils.java
fuente
Si las aplicaciones se instalan silenciosamente (sin el diálogo de instalación habitual), presumiblemente estas aplicaciones llaman directamente
pm
, es decirPackageManager
, que como una aplicación del sistema tiene el permisoandroid.permission.INSTALL_PACKAGES
.El teléfono debe estar rooteado para que la aplicación pueda llamar
pm
en un contexto raíz, de lo contrario, recibirá el mensaje "Ni el usuario xxxx ni el proceso actual tienen android.permission.INSTALL_PACKAGES".EDITAR: como @Izzy señaló en el comentario,
android.permission.INSTALL_PACKAGES
también se otorga a las aplicaciones instaladas en/system
. Vea el comentario a continuación y esta pregunta SO para obtener más información.fuente