[Android] Criar Atualizador

E ai pessoal, alguém tem ideia de como fazer um atualizador pra um aplicativo android? irei utilizá-lo fora do Google Play

Amigo se voce tiver a resposta poderia compartilha-la ? , ficaria grato !

Voce vai ter que colocar um servidor para rodar um serviço de atualização e fazer com que sua aplicação verifique se tem atualizações

olá amigo, eu sei q é errado eu entregar pronto pra vc, más sofri mt pra descobrir como fazer isso que vc ta precisando.

primeiramente vc vai ter q colocar seu .apk em algum servidor ou site HTTP.

depois vc vai criar uma classe com o seguinte conteudo.

[code]package com.rsoftsolucoes.mobile.android.conexaoHttp;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.widget.Toast;

import com.rsoftsolucoes.mobile.android.AtualizarDados;
import com.rsoftsolucoes.mobile.android.Dialog;

public class Updater {

private static final String RELEASE = "Arquivo.apk"; //nome do arquivo .apk quando ele estiver sendo criado na pasta /Download em seu device android

private static Context context;

public Updater(Context context) { //recebe o contexto da aplicação 
	Updater.setContext(context);
	update();
}

public static void update() { //metodo principal para ser executado pela outra classe para atualizar

	final String urlDownload="http://www.site.com.br/app/Arquivo.apk"; //local do arquivo .apk atualizado
	final Dialog dialog = new Dialog(getContext());
	dialog.showDialog(true, "Aguarde! atualizando versão de sistema");
	
	
		new Thread (new Runnable() { 
			
			public void run() {
				//baixar arquivo 
				try {
				final String PATH = downloadFile(urlDownload);

				
				installApplication(PATH);
				// unInstallApplication("package:com.rsoftsolucoes.mobile.android");
				} catch (IOException ex) {
					Toast.makeText(getContext().getApplicationContext(),
							ex.getMessage(), Toast.LENGTH_LONG).show();
				} finally {
					dialog.showDialog(false, "atualizado");
				}
			}
		}).start();
	

		
		
	
}

//faz o download do arquivo especificado na url
private static String downloadFile(String urlDownload)
throws MalformedURLException, IOException, ProtocolException,
FileNotFoundException {
URL url = new URL(urlDownload);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod(“GET”);
c.setDoOutput(true);
c.connect();

	// final String PATH =
	// "/data/data/com.rsoftsolucoes.mobile.android/files/" + RELEASE;
	final String PATH = "/mnt/sdcard/download/" + RELEASE;
	FileOutputStream fos = new FileOutputStream(new File(PATH));

	String command = "chmod 777 " + PATH;

	Runtime.getRuntime().exec(command);
	
	InputStream is = c.getInputStream();

	byte[] buffer = new byte[1024];
	int len = 0;
	while ((len = is.read(buffer)) != -1) {
		fos.write(buffer, 0, len);
	}
	fos.close();
	is.close();
	return PATH;
}

//metodo para instalar o arquivo .apk
private static void installApplication(final String PATH) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(PATH)),
“application/vnd.android.package-archive”);
getContext().startActivity(intent);
}

//metodo para desinstalar o programa antes de instalar o novo
public static void unInstallApplication(String packageName)// Specific
// package Name
// Uninstall.
{
// Uri packageURI = Uri.parse(“package:com.CheckInstallApp”);
Uri packageURI = Uri.parse(packageName.toString());
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
getContext().startActivity(uninstallIntent);
}

public static Context getContext() {
	return context;
}

public static void setContext(Context context) {
	Updater.context = context;
}

}
[/code]

aí quando vc quiser atualizar sua app, vc pode colocar em uma activity ou service, ou seja la como vc quiser atualizar.
use o seguinte codigo na outra classe para atualizar sua app:

Fala cara joia.

da uma olhada nisso.

http://www.eliangela.info/2012/02/09/auto-update-em-sua-aplicacao-android/

http://www.eliangela.info/2012/02/16/auto-update-em-sua-aplicacao-android-parte-2/

Precisei fazer peguei aqui no Forum GUJ.

Estou utilizando o código informado nesse post para fazer a atualização, ele baixa o apk e avisa que vai substituir a aplicação, porém na verdade ele continua com o apk antigo, eu preciso desinstalar o aplicativo antes de instalar?

Aliás, ele avisa que vai substituir mas depois da a mensagem de Aplicativo não instalado.

Ola a todos,
testei o seu atualizador, mas quando chega nesta linha, ele entra no catch

Alguem sabe o porque?

Obrigado