Ho provato molti modi in StackOverFlow e in altri siti Web ma non funziona.Come faccio ad aggiornare l'apk in modo programmato e riavviare l'app?
Il mio problema è che ho questa applicazione che ho bisogno di aggiornare e dopo l'aggiornamento, dovrebbe girare automaticamente la stessa applicazione (aggiornata) di nuovo.
Questo è il mio codice:
private synchronized void runRootUpdate() {
// Install Updated APK
String command = "pm install -r " + downloadPath + apkFile;
Process proc = Runtime.getRuntime().exec(new String[] {"su", "-c", command});
int test = proc.waitFor(); // Error is here.
if (proc.exitValue() == 0) {
// Successfully installed updated app
doRestart()
} else {
// Fail
throw new Exception("Root installation failed");
}
}
private void doRestart() {
Intent mStartActivity = new Intent(context, MainActivity.class);
int mPendingIntentId = 123456;
PendingIntent mPendingIntent = PendingIntent.getActivity(context, mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
System.exit(0);
}
Date un'occhiata al mio "errore è qui". La mia vecchia app installerà una nuova app aggiornata e si ucciderà da sola, quindi non ci sarà proc.waitFor() e tornerà indietro nella schermata principale, MA la nuova app aggiornata verrà installata. Tuttavia, ho bisogno di girarlo di nuovo su se stesso. C'è un modo per farlo?
hai qualche soluzione ora ? –
come si pianifica di aggiornarlo? è acceso quando la tua applicazione sta eseguendo inn inneground? –