Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
ILNAR_93
Android
236 / 236 / 49
Регистрация: 19.01.2013
Сообщений: 1,854
Записей в блоге: 3
#1

Автообновление приложения - Программирование Android

29.01.2016, 14:57. Просмотров 1731. Ответов 37
Метки нет (Все метки)

Возможно ли автообновление приложения программно?
без участия гугл плей т.е. приложение установлено из ненадежного источника

http://www.cyberforum.ru/android-dev/thread1908800.html

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2016, 14:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Автообновление приложения (Программирование Android):

Из приложения А проверить наличие установленного на устройстве приложения В
Извиняюсь за нубский вопрос. Подскажите в андроид есть возможность из...

Ошибка при вызове приложения из другого приложения
Сделано два простеньких приложения и я хочу чтобы одно приложение запускало...

Запуск приложения из другого приложения
Собственно вопрос уже назван в теме: есть приложение, как по нажатии кнопки...

Запуск приложения из другого приложения
Привет товарищи! Имеется два приложения. Задача следующая: Из первого...

Автообновление приложения
Подскажите как реализовать обновление программы. Моя программа написанная в...

37
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
04.03.2016, 13:45 #21
CoolMind, чет Вы через чур мудрите, у меня все проще:
-при авторизации в приложении проверяем наличие обновления;
-если оно имеется, скачиваем в какое либо место(при этом сохраняя его допустим в SharedPreferences);
-кидаем интент на установку этого файла;
-пользователь либо устанавливает, либо нет, без разницы;
-при запуске проверяем наличие apk установочного файла из SharedPreferences, и если таковой имеется - удаляем.
Название apk может быть каким угодно в принципе, оно ни на что не влияет.
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
04.03.2016, 14:07 #22
androbro, да, неплохо, спасибо! Мне кажется, здесь есть какие-то подводные камни, но пока найти не могу. Давайте попробуем по шагам.
1) при авторизации в приложении проверяем наличие обновления.
2) при запуске проверяем наличие apk установочного файла из SharedPreferences, и если таковой имеется - удаляем.
Не знаю точно, какова последовательность этих двух пунктов. Допустим, проверить обновления можно только после авторизации (чтобы неизвестные пользователи не могли обновиться или сервер не пускает).
3) если оно имеется, скачиваем в какое либо место(при этом сохраняя его допустим в SharedPreferences).
Думаю, тут надо предложить скачать. Иначе, если пользователь не хочет обновляться, программа будет каждый раз удалять и скачивать.
4) кидаем интент на установку этого файла.
5) пользователь либо устанавливает, либо нет, без разницы.
Во время выполнения возможны подводные камни. Если поглядеть http://stackoverflow.com/a/9045884/2914140, то там упоминается про подписывание приложения тем же ключом. Интересно, что получится, если название пакета или ключ отличаются. Насколько я понял, удалять текущую программу перед установкой нельзя, она заменится автоматически.
0
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
04.03.2016, 14:24 #23
Цитата Сообщение от CoolMind Посмотреть сообщение
Думаю, тут надо предложить скачать.
как я в этой теме вроде писал, у меня все жестко, либо обновляемся и работаем, не хотим обновляться не работаем(==получаем по шапке).
Цитата Сообщение от CoolMind Посмотреть сообщение
Во время выполнения возможны подводные камни.
Цитата Сообщение от CoolMind Посмотреть сообщение
про подписывание приложения тем же ключом
да эт насколько мне известно при любом обновлении проверяется идентичность подписей.
Цитата Сообщение от CoolMind Посмотреть сообщение
Интересно, что получится, если название пакета или ключ отличаются.
насколько помню скажет что просто нельзя обновится...старая версия как мне кажется должна удалятся только при успешной установке новой
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
04.03.2016, 15:09 #24
Цитата Сообщение от androbro Посмотреть сообщение
насколько помню скажет что просто нельзя обновится
Вот и мне так кажется. В этом случае, наверное, нужен либо второй инсталлятор, либо давать пользователю вручную удалить старую версию и поставить новую.

Добавлено через 8 минут
Добавлю выпадающую ошибку для этого случая: http://stackoverflow.com/questions/1...ils-to-install.

Добавлено через 8 минут
Также есть следующее описание (http://stackoverflow.com/a/32201317/2914140):
Android does not allow any code within an APK to be run once the user chooses to remove it - there are no notifications and no pre-uninstall actions that you can use. It's designed that way to prevent developers from writing Apps that can never be uninstalled by the user.
Having two apps with the same package name but signed with different keys is also not allowed, and can only be resolved by the user manually removing the first app before installing the second. This is to prevent developers from writing Apps to imitate other Apps (like Facebook for example) without the user knowing about it.
0
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
04.03.2016, 15:51 #25
Цитата Сообщение от CoolMind Посмотреть сообщение
В этом случае, наверное, нужен либо второй инсталлятор, либо давать пользователю вручную удалить старую версию и поставить новую.
ну так а что Вам стоит подписывать приложение одним ключом и не париться по этому поводу?
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
04.03.2016, 15:55 #26
androbro, по идее да, так и надо делать. Но возможны разные ситуации. Не уверен, но возможно, подписание с другого компьютера. Или передача дел другому сотруднику. Или замещение на период отпуска.
0
faceman1
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 14
07.03.2016, 14:48 #27
Имеется приложение в гугл плэе, думаю реализовать в нем механизм самообновления. Возник вопрос, можно ли программно реализовать включение режима разработчика и установку приложений из неизвестных источников?
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
11.03.2016, 15:32 #28
faceman1, http://stackoverflow.com/questions/1...ogrammatically, пишут, что это можно сделать, если приложение системное или имеется root-доступ.

Добавлено через 3 минуты
Цитата Сообщение от androbro Посмотреть сообщение
у меня все жестко, либо обновляемся и работаем, не хотим обновляться не работаем(==получаем по шапке)
Тоже так будем делать, но возникла вот такая проблема. Пользователю, конечно, установить предложится, но он может и отменить. Соответственно, приложение не догадается, что установка не сделана. Как узнать? Думаю, можно по окончании сравнить версии текущего файла и ту, которая должна быть.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
11.03.2016, 16:27 #29
Цитата Сообщение от CoolMind Посмотреть сообщение
Но возможны разные ситуации. Не уверен, но возможно, подписание с другого компьютера. Или передача дел другому сотруднику. Или замещение на период отпуска.
А как это влияет на ключ? Это же файл, не привязанный ни к чему вообще - показываешь его студии, вводишь пароль от него и все. Может даже инопланетянин на своем устройстве подписать (если оно студию запустит, конечно).
1
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
11.03.2016, 16:30 #30
Цитата Сообщение от CoolMind Посмотреть сообщение
Как узнать?
да способов узнать можно придумать много...
вот например пользователь не установил приложение, снова проходит авторизацию(тут важно не залогинить его при обнаружении новой версии) тут ему бах и снова предложение обновится(можно в принципе файл не качать, проверив на exists).
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
11.03.2016, 16:39 #31
Цитата Сообщение от Spelcrawler Посмотреть сообщение
показываешь его студии, вводишь пароль от него и все.
Согласен при условии, что пароль известен. Впрочем, пароли обычно тоже передают.
Цитата Сообщение от androbro Посмотреть сообщение
снова проходит авторизацию(тут важно не залогинить его при обнаружении новой версии)
Да, это хороший подход, тоже над этим думал.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
15.03.2016, 16:24 #32
А вот и первый серьёзный подводный камень.
Что же вы мне не сказали, что приложение после обновления не открывается автоматически?
Пробовал ловить разные receiver'ы, как пишут в http://stackoverflow.com/questions/2...reset-an-alarm и других статьях. Ничего не работает!
0
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
15.03.2016, 16:38 #33
Цитата Сообщение от CoolMind Посмотреть сообщение
А вот и первый серьёзный подводный камень.
Что же вы мне не сказали, что приложение после обновления не открывается автоматически?
ну как по мне это и не такой уж и большой камень, опять таки все в руках пользователя, там же после обновления появляется диалог(если я правильно помню) с возможностью открытия приложения.
В принципе как и при установке любого другого приложения, данное поведение стандартно.
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
15.03.2016, 16:46 #34
Цитата Сообщение от androbro Посмотреть сообщение
после обновления появляется диалог(если я правильно помню) с возможностью открытия приложения
Когда делал через вторую программу (первая вызывает вторую, та обновляет первую), так действительно происходило, предлагала 2 кнопки: "Готово" и "Открыть". Когда просто обновляю одну программу, после установки она закрывается и ничего не предлагает. Затем её можно открыть вручную и убедиться, что версия поменялась. Дурдом какой-то.
0
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
15.03.2016, 16:48 #35
Цитата Сообщение от CoolMind Посмотреть сообщение
после установки она закрывается и ничего не предлагает.
странно, должно быть поведение которое Вы и описали:
Цитата Сообщение от CoolMind Посмотреть сообщение
предлагала 2 кнопки: "Готово" и "Открыть"
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
15.03.2016, 17:12 #36
Цитата Сообщение от androbro Посмотреть сообщение
странно, должно быть поведение которое Вы и описали
Это хорошая новость, значит, к этому поведению надо придти.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
15.03.2016, 17:14 #37
CoolMind, ресиверы не ловятся до запуска приложения руками. Посмотрите на реализацию обновления в приложении fs videobox - мне нравится, удобно. Автор есть на 4пда - можно спросить как он реализовал.
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
15.03.2016, 18:19 #38
Здесь объясняют, как открыть это окно: я совсем забыл добавить эту строку:
Java
1
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Добавлено через 33 минуты
И тут проявилась новая проблема. Когда вызывал обновление первого приложения через второе, то в onActivityResult я легко после обновления получал версию приложения и мог вывести сообщение, что оно обновилось (или, наоборот, не обновилось).
В случае если обновляю само приложение, появляется известная табличка с предложением обновить программу и кнопками "Отмена" и "Установить". При этом onActivityResult срабатывает сразу, ещё до того как пользователь нажмёт "Установить".

Добавлено через 2 минуты
Правда, если бы он срабатывал позже, то сама активность уже не существовала бы, что приводило бы к ошибке.
1
15.03.2016, 18:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2016, 18:19
Привет! Вот еще темы с решениями:

Автообновление
Здравствуйте. Стал писать автообновление для своей программы, назрел вопрос....

Автообновление
Я тут хочу зделать чтобы при нажатии на кнопку оно скачивала с страницы...

Автообновление
Доброго времени суток. Имеется страница layout.blade.php В нем есть...

Автообновление
Итак столкнулся с такой проблемой. Моя программа обновляется практически каждый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru