Как установить apk программно? [дубликат]

238
02 ноября 2017, 04:49

На данный вопрос уже ответили:

  • Как можно программно обновлять своё приложение на android? 1 ответ

Пишу модуль для обновления приложения программно.

Необходимо установить новую версию .apk программно, чтоб клиент даже не знал что у него обновилось приложение.

Возможно ли это? И если да, то как?

Answer 1

Установить приложение программно в silent mode без прав рута в общем случае невозможно.

К тому же, если приложение с подобным функционалом опубликовано в Google Play, то оно может быть заблокировано (обновление должно быть опционально и только через Google Play).

Если есть рут, то можно примерно так:

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();
        }
    }
}
Answer 2

Делается это так:

Intent installIntent = new Intent(Intent.ACTION_VIEW);
installIntent.setDataAndType(Uri.parse("file:///path_to.apk"), 
                    "application/vnd.android.package-archive");
//или если установка из маркета
installIntent.setData(Uri.parse("market://details?id=app.package.name"));
startActivity(installIntent);

В любом случае, без одобрения юзера установка не пройдет: выскочит уведомление - типа вы уверены?

Answer 3

Никак, надо просто запустить стандартную установку, а пользователь сам решит, надо ему это или нет.

READ ALSO
Один и тот же метод во многих Activity

Один и тот же метод во многих Activity

Недавно начал изучение java и android и решил написать приложениеЕсть некий метод loadData(List<Item> itemList);, который на вход принимает коллекцию

257
Включить редактирование только добавляемой новой строки JTable

Включить редактирование только добавляемой новой строки JTable

Здравствуйте! Для таблицы JTable поставил isCellEditable в false

284
Как в PopupMenu уменьшить высоту пунктов?

Как в PopupMenu уменьшить высоту пунктов?

Пробовал через задание стиля так:

217
Unity3D Custom Collider

Unity3D Custom Collider

В Update cтреляем лучом по коллайдеру и получаем у него нужный нам родительский объект

296