Reinstalar o aplicativo apk programaticamente sem fazer o download

Devido aessa irritante limitação do Android Eu preciso que os usuários reinstalem meu aplicativo para que as permissões de manifesto sejam detectadas por outros aplicativos.

Isso já vai ser frustrante para o usuário, mas além disso, não consigo ver uma maneira de reinstalar meu aplicativo a partir do apk armazenado em / data / app e, portanto, precisaria fazer o download da mesma versão no cartão de armazenamento antes de disparar o intenção de instalação usual.

Aguardo ansiosamente alguém me dizendo que estou sentindo falta de algo óbvio! Eu desenhei um espaço em branco ...

Desde já, obrigado.

Por favor, marque o problema se quiser resolvê-lo! Felicidades.

EDITARCom os comentários do @hackbod em mente, você pode usar o seguinte código para iniciar o diálogo de instalação.

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(this.getApplicationInfo().sourceDir)),
"application/vnd.android.package-archive");
startActivity(intent);

No meu dispositivo Jelly Bean, isso apresenta duas opções:Instalador de pacotes eVerificar e instalar. Eu não sei se o último vai lidar com a questão de:

A instalação do seu aplicativo dessa maneira provavelmente removerá a propriedade dele da Play Store

Meu aplicativo é gratuito, por isso não posso testar o problema pago de:

Observe, no entanto, se o seu aplicativo está bloqueado para envio (o que é inevitável para todos os aplicativos pagos que começam com o JB, devido à criptografia do aplicativo), isso não funcionará porque o executável do aplicativo não pode ser lido por outros usuários.

Embora o hackbod termine com 'legível por outros', o que sugere que, se você estiver executando isso através de seu próprio código, para sua própria aplicação, ele é legível? Por favor me corrija se você pode testar isso e eu estou errado.

questionAnswers(1)

yourAnswerToTheQuestion