Reinstalar la aplicación apk mediante programación sin descargar

Debido a esta molesta limitación de Android , necesito que los usuarios vuelvan a instalar mi aplicación para que los permisos de manifiesto sean detectados por otras aplicaciones.

Esto ya va a ser frustrante para el usuario, sino que, además, no puede ver una forma de volver a instalar la aplicación desde el apk almacenada en / data / app y por lo tanto tendría que descargar la misma versión de la tarjeta de almacenamiento antes de disparar el Intención habitual de instalación.

Espero ansiosamente que alguien me diga que estoy perdiendo algo obvio! He dibujado un espacio en blanco …

Gracias por adelantado.

Por favor, haga la estrella del problema si desea verlo resuelto! Aclamaciones.


EDIT : con los comentarios de @hackbod en mente, puede utilizar el código siguiente para iniciar el cuadro de 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, esto presenta dos opciones: Instalador del paquete y Verificar e instalar . No sé si esta última se ocupará de la cuestión de:

  • Instalar tu aplicación de esta manera probablemente eliminará la propiedad de la aplicación de Play Store.

Mi aplicación es gratuita, por lo que no puedo probar la cuestión de pago de:

  • Tenga en cuenta, sin embargo, si su aplicación está bloqueada (que es inevitable para todas las aplicaciones pagadas que comienzan con JB, debido al cifrado de la aplicación), esto no funcionará porque el ejecutable de su aplicación no puede ser leído por otros

Aunque hackbod termina con 'legible por otros' que sugiere que si está ejecutando esto a través de su propio código, para su propia aplicación, es legible? Por favor corrija si puedes probar esto y estoy equivocado.

Es posible que solo puedas obtener la ruta a tu .apk a través de Context.getApplicationInfo (). SourceDir, e iniciar el instalador de la aplicación con esa ruta. No obstante, si su aplicación está bloqueada (que es inevitable para todas las aplicaciones pagadas que comienzan con JB, debido al cifrado de la aplicación), esto no funcionará porque el ejecutable de su aplicación no puede ser leído por otros. En ese caso usted necesitaría copiar el .apk a algún lugar legible en el mundo (como en el almacenamiento externo) e instalarlo desde allí.

No importa lo que hagas aquí, sin embargo, esto tiene algunas inevitables consecuencias muy negativas:

  • La única manera de hacer cualquier tipo de instalación desde su aplicación es pasar por la interfaz de usuario de carga lateral, que es (a) va a ser una experiencia muy aterradora para el usuario, y (b) requerirá que el usuario encienda el lado Para poder continuar.
  • La instalación de su aplicación de esta manera probablemente eliminará su propiedad de Play Store (ya que ya no es la que la ha instalado). Esto puede significar por ejemplo que el usuario ya no puede reportar fallos o ANRs a través de la tienda de reproducción, u otras consecuencias negativas. No estoy seguro de exactamente qué problemas realmente suceden aquí, pero realmente no asumiría que esto va a estar bien.

En última instancia, yo simplemente no sugeriría hacer esto. ¿Qué permiso necesitas que te obligue a hacer esto? Por muchas razones, no recomendaría que las aplicaciones de terceros declaren sus propios permisos en la mayoría de los casos, ya que hay muchas experiencias de usuario defectuosas alrededor de permisos que sólo se conocen después de que se hayan necesitado.

  • Prácticas recomendadas para la programación asíncrona
  • Actualizar elementos en un objeto JSONO
  • Código fuente de APK
  • Enviar una base de datos a través de ftp - Obtener un archivo diferente
  • R no se puede resolver a una variable (nuevo proyecto androide)
  • ¿Es una buena idea usar la biblioteca Google Guava para el desarrollo de Android?
  • ¿Cómo puedo crear un bloqueo (concurrent.locks.Lock) en Android?
  • TabLayout se bloquea después de actualizar la biblioteca de soporte a 23.2.1
  • Youtube API v3 buscar videos, recuperar el título y url
  • ¿Cuáles son los efectos secundarios de la inhabilitación de la inspección LINT?
  • Java HttpGet no acepta gzip
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.