Нужно сделать так, чтобы приложение могло обновлять само себя. На некоторых форумах в интернете писали, что этот код сработает:
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
Комментариев нет:
Отправить комментарий