Страницы

Поиск по вопросам

понедельник, 17 июня 2019 г.

Android: заставить приложение обновить само себя

Нужно сделать так, чтобы приложение могло обновлять само себя. На некоторых форумах в интернете писали, что этот код сработает:
Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/" + "app.apk")), "application/vnd.android.package-archive"); startActivity(intent);
Но нужно так, чтобы приложение обновлялось на заднем фоне, без спроса пользователя. Максимум - уведомление, нотификация. Никаких хитростей я выдумать не пытаюсь. Всё заключается в том, что телефон играет роль веб-сервера.


Ответ

Можно так, но нужен root
try { Process install = Runtime.getRuntime().exec("su
"); DataOutputStream os = new DataOutputStream(install.getOutputStream()); os.writeBytes("pm install /mnt/sdcard/download/app.apk
"); os.writeBytes("exit
"); os.flush(); install.waitFor();
if (install.exitValue() == 0) { Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(MainActivity.this, "Failure. Exit code: "+String.valueOf(install.exitValue()), Toast.LENGTH_LONG).show(); }
} catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
Или так:
public static void InstallAPK(String filename){ File file = new File(filename); if(file.exists()){ try { String command; command = "adb install -r " + filename; Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", command }); proc.waitFor(); } catch (Exception e) { e.printStackTrace(); } } }
https://stackoverflow.com/questions/14871570/install-unistall-from-shell-command-in-android https://stackoverflow.com/questions/26926274/install-android-apk-without-prompt

Комментариев нет:

Отправить комментарий