Debido a this annoying Android limitation Necesito que los usuarios reinstalen mi aplicación para que otras aplicaciones puedan detectar los permisos.Reinstalar la aplicación apk mediante programación sin descargar
Esto ya va a ser frustrante para el usuario, pero además, no veo una manera de volver a instalar mi aplicación desde la apk almacenada en/data/app y, por lo tanto, tendría que descargar la misma versión en el almacenamiento tarjeta antes de disparar el intento de instalación habitual.
¡Espero ansiosamente que alguien me diga que me estoy perdiendo algo obvio! He dibujado un espacio en blanco ...
Gracias de antemano.
¡Por favor, protagonice el problema si desea verlo resuelto! Aclamaciones.
EDITAR: Con los comentarios de @hackbod en mente, usted puede utilizar el código siguiente para iniciar el diálogo de instalación.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(this.getApplicationInfo().sourceDir)),
"application/vnd.android.package-archive");
startActivity(intent);
en mi dispositivo Jelly Bean, este presenta dos opciones: instalador paquete y Verificar e instalar. No sé si éste va a tratar el tema de:
- instalación de la aplicación de esta manera probablemente eliminará la propiedad de ella desde Play Store
Mi aplicación es gratuita, por lo no puedo probar el tema de pago de: sin embargo
- Nota si su aplicación está bloqueada hacia adelante (que es inevitable para todas las aplicaciones de pago que comienzan con JB, debido a la aplicación de cifrado), entonces esto no va a funcionar becau SE el ejecutable de aplicación no es legible por otros
Aunque acabados hackbod con 'legible por otros' lo que sugiere que si se está ejecutando esto a través de su propio código, para su propia aplicación, es legible? Por favor corrígeme si puedes probar esto y estoy equivocado.
Puede copiarlo desde/data/app a la tarjeta de almacenamiento. Aunque no puede navegar por ese directorio, los archivos que contiene son generalmente legibles, aunque eso no está garantizado (y esa no siempre es la ubicación de instalación). Una alternativa podría ser no usar el sistema de permisos, pero intente hacer su propia autenticación del paquete solicitante. –
Gracias Chris - Mi aplicación debe estar instalada en el dispositivo, de lo contrario no funcionará correctamente, por lo que tengo preocupaciones mínimas sobre la ubicación de instalación del usuario. ¿Asumo que esa es la única consideración a la que te refieres? Además, como/data/app es legible, pude comprobar que el apk se encontraba allí antes que nada. Desde mi búsqueda, no puedo encontrar una forma de transferir el apk desde esa ubicación a menos que use funciones de raíz ... Me encantaría saber si hay alguna manera ... ¿No estoy seguro de lo que querías decir con mi "propia autenticación"? Aclamaciones. – brandall
Si es legible (como suele ser), no es necesario que el usuario root lo copie en algún lugar donde se le permita escribir (como la tarjeta SD, con el permiso de manifiesto correspondiente). Sin embargo,/data/app no siempre está donde se instala. Y a veces el nombre del archivo apk se cambia durante la instalación. Es posible que pueda determinar la ubicación y el nombre instalado de /data/system/packages.xml, pero en ese punto está bastante metido en la funcionalidad interna privada que puede no ser a prueba en el futuro. Realmente, volver a descargar es probablemente tu mejor opción, al menos, tener eso como una opción alternativa. –