Я пробовал много способов, заданных в StackOverFlow и на другом веб-сайте, но на самом деле это не работает.
Моя проблема в том, что у меня есть это приложение, которое мне нужно обновить и после обновления, оно должно автоматически снова включить то же приложение (обновленное).
Это мой код:
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);
}
Взгляните на мою "Ошибка здесь". Мое старое приложение установит новое обновленное приложение и убьет себя, поэтому нет proc.waitFor() и вернется на начальном экране, но обновляется новое обновленное приложение. Тем не менее, мне нужно, чтобы оно вернулось к самому себе. Могу ли я это сделать?