Algunas veces necesitamos actualizar la aplicación desde el mismo Device o Tablet.Muchas veces estas se encuentran conectadas a alguna red inalámbrica.
El cliente necesita la última versión que, en general arregla algunos bugs o simplemente mejora nuestra aplicación móvil.
En AndroidSDK tenemos la posibilidad de lograrlo con estos simples códigos:
1- Creamos un button y lo conectamos con un método del controlador
2- Creamos una tarea asíncrona
3- Instanciamos la tarea en el método que llama el botón:
A tener en cuenta: Debemos ubicar nuestro APK en una URL válida.
CODIGO DEL ASYNCTASK (TAREA ASINCRONA)
import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.AsyncTask; import android.util.Log; public class UpdateApp extends AsyncTask<String,Void,Void>{ private Context context; public void setContext(Context contextf){ context = contextf; } @Override protected Void doInBackground(String... arg0) { try { URL url = new URL(arg0[0]); HttpURLConnection c = (HttpURLConnection) url.openConnection(); c.setRequestMethod("GET"); c.setDoOutput(true); c.connect(); String PATH = "/mnt/sdcard/Download/"; File file = new File(PATH); file.mkdirs(); File outputFile = new File(file, "update.apk"); if(outputFile.exists()){ outputFile.delete(); } FileOutputStream fos = new FileOutputStream(outputFile); InputStream is = c.getInputStream(); byte[] buffer = new byte[1024]; int len1 = 0; while ((len1 = is.read(buffer)) != -1) { fos.write(buffer, 0, len1); } fos.close(); is.close(); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File("/mnt/sdcard/Download/update.apk")), "application/vnd.android.package-archive"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this flag android returned a intent error! context.startActivity(intent); } catch (Exception e) { Log.e("UpdateAPP", "Update error! " + e.getMessage()); } return null; } }
CODIGO DEL METODO:
public void sincronizar(View view) throws NumberFormatException, ParseException { UpdateApp atualizaApp = new UpdateApp(); atualizaApp.setContext(getApplicationContext()); atualizaApp.execute("http://myweb.com/android/myapp.apk"); }
Anuncios