Instalar arquivo .apk sem Intent

5 respostas
M

Bom dia pessoal.
Estou utilizando o seguinte código para instalar um arquivo .apk no meu aplicativo:

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

Funciona certinho, mas sempre abre aquela tela de instalação de aplicativo do Android.
Sendo assim, existe alguma forma de instalar aplicativos sem passar por essa Intent?

Obrigado.

5 Respostas

M

Bom, resolvi a questão, mas nesse caso, o root foi necessário.
Para quem tem o mesmo problema, ou quer testar, segue o código:

if(extension.equals("apk")){
							Process p;
							try {
								p = Runtime.getRuntime().exec("su");
								DataOutputStream os = new DataOutputStream(p.getOutputStream());
								os.writeBytes("pm install " + fileSelecionado.getPath() + "\n");
								os.writeBytes("exit\n");
								os.flush();
								p.waitFor();
								if(p.exitValue() == 0){
									Log.i("PrincipalActivity", "Root: App instalado.");
								} else {
									Log.i("PrincipalActivity", "Sem root: assistente de instalação");
									intent.setDataAndType(Uri.fromFile(fileSelecionado), "application/vnd.android.package-archive");
									startActivity(intent);
								}
							} catch (Exception e) {
								e.printStackTrace();
							}
A

Instalar um aplicativo sem o consentimento do usuário iria violar a segurança do Android. Por isso você só consegue com acesso root (é mais ou menos assim que o Titanium Backup faz pra poder instalar os apps na versão Pro).

M

O app é só para uso pessoal mesmo. Eu vivo trocando de ROM, e estava usando o Astro File Manager pra instalar os aplicativos novamente, e pra todo aplicativo, abre aquele assistente para instalar. Com esse app, eu apenas seleciono os arquivos .apk que quero instalar e deixo ele fazer o resto.
E violando a segurança do sistema, não dá nem pra pensar em publicar isso. :stuck_out_tongue:

A

m_araujo01:
O app é só para uso pessoal mesmo. Eu vivo trocando de ROM, e estava usando o Astro File Manager pra instalar os aplicativos novamente, e pra todo aplicativo, abre aquele assistente para instalar. Com esse app, eu apenas seleciono os arquivos .apk que quero instalar e deixo ele fazer o resto.
E violando a segurança do sistema, não dá nem pra pensar em publicar isso. :p

Você até pode publicar, como seu app vai precisar de acesso root, está subentendido que ele poderá fazer o que quiser no dispositivo. O Titanium Backup Pro faz isso.

O que eu fiz foi um script pra instalar e renomear todos os apks de um diretório pra me organizar, mas depois que comprei o Titanium Backup nem usei mais ele. O código é bem simples:

#!/bin/bash [ -z "$1" ] && { echo """ Usage: $0 FILES... """ exit 1 } for apk in "$@"; do adb install -r "$apk" done

Mas eu ainda sugiro o Titanium Backup Pro. Se você usá-lo e sincronizar com o Dropbox os seus backups, trocar de ROM fica mais fácil do que trocar de roupa.

M

Ataxexe:
m_araujo01:
O app é só para uso pessoal mesmo. Eu vivo trocando de ROM, e estava usando o Astro File Manager pra instalar os aplicativos novamente, e pra todo aplicativo, abre aquele assistente para instalar. Com esse app, eu apenas seleciono os arquivos .apk que quero instalar e deixo ele fazer o resto.
E violando a segurança do sistema, não dá nem pra pensar em publicar isso. :p

Você até pode publicar, como seu app vai precisar de acesso root, está subentendido que ele poderá fazer o que quiser no dispositivo. O Titanium Backup Pro faz isso.

O que eu fiz foi um script pra instalar e renomear todos os apks de um diretório pra me organizar, mas depois que comprei o Titanium Backup nem usei mais ele. O código é bem simples:

#!/bin/bash [ -z "$1" ] && { echo """ Usage: $0 FILES... """ exit 1 } for apk in "$@"; do adb install -r "$apk" done

Mas eu ainda sugiro o Titanium Backup Pro. Se você usá-lo e sincronizar com o Dropbox os seus backups, trocar de ROM fica mais fácil do que trocar de roupa.

Hahahahahaha, vou fazer isso então, porque instalar os apps novamente com aquele assistente do Android, além de ser demorado, é um saco. Obrigado pela dica Ataxexe. ;D

Criado 9 de setembro de 2013
Ultima resposta 13 de set. de 2013
Respostas 5
Participantes 2