Intereting Posts
Почему мы получаем эти «недействительные» намерения? Информация об учетной записи, связанная с установкой приложения Не удалось получить доступ к диспетчеру пакетов. Это система, работающая при установке приложения для Android Почему я получаю ошибки «Неподдерживаемый формат», считывая потоки rtsp, закодированные H.264, с помощью Android MediaPlayer? Как импортировать набор значков в проект Android Studio Пожалуйста, объясните мне класс Context в Android Ошибка: финиш можно вызвать только один раз В чем разница между ACTION_SENDTO и ACTION_VIEW при отправке смс? Удалите круг из Android Google Maps API v2 без очистки карты Реагировать на родные андроидные переходы очень медленно Менеджер Alarm сохраняется даже после перезагрузки? Как подключить Android-приложения к электронным таблицам Google Таблиц? У Android Studio есть средство просмотра иерархии? CardView внутри RecyclerView имеет дополнительные поля Android запускает музыкальный плеер, используя намерение

Обновите приложение для Android (без Google Play)

Я написал бета-версию приложения. Он будет доступен для загрузки через Интернет (я не буду публиковать его на Play Market). Возможно ли обновить это приложение без Play Market, когда будет выпущена новая версия?

Solutions Collecting From Web of "Обновите приложение для Android (без Google Play)"

Абсолютно. Вам нужно будет создать механизм, хотя для вашего приложения, чтобы позвонить домой на сервер, узнайте, есть ли новая версия приложения, а если есть, вытащите его и установите. Как только вы определили, что вам нужно снять обновление, вы можете сделать это с чем-то похожим на эту AsyncTask:

protected String doInBackground(String... sUrl) { String path = "/sdcard/YourApp.apk"; try { URL url = new URL(sUrl[0]); URLConnection connection = url.openConnection(); connection.connect(); int fileLength = connection.getContentLength(); // download the file InputStream input = new BufferedInputStream(url.openStream()); OutputStream output = new FileOutputStream(path); byte data[] = new byte[1024]; long total = 0; int count; while ((count = input.read(data)) != -1) { total += count; publishProgress((int) (total * 100 / fileLength)); output.write(data, 0, count); } output.flush(); output.close(); input.close(); } catch (Exception e) { Log.e("YourApp", "Well that didn't work out so well..."); Log.e("YourApp", e.getMessage()); } return path; } // begin the installation by opening the resulting file @Override protected void onPostExecute(String path) { Intent i = new Intent(); i.setAction(Intent.ACTION_VIEW); i.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive" ); Log.d("Lofting", "About to install new .apk"); this.context.startActivity(i); } 

Да, это возможно, вот примерно то, что вы можете сделать:

  1. Получить текущее приложение versionCode

     PackageInfo packageInfo = getPackageManager().getPackageInfo(context.getPackageName(), 0); int curVersionCode = packageInfo.versionCode; 
  2. Имейте сервер, на котором вы размещаете файл apk и создаете простой простой файл, содержащий только одно целое число, которое представляет собой последний код версии приложения.

  3. Когда приложение запускается (или когда вы хотите проверить обновление), извлеките последний код версии с сервера (т. Е. Через HTTP-запрос) и сравните его с текущей версией приложения.

  4. Если есть новая версия, загрузите apk и установите его (предложит диалог для пользователя).

Редактировать:

Для этого вы можете использовать код @Blumer.

Возможно, однако имейте в виду, что пользователь должен будет включить «Разрешить установку нерыночных приложений / неизвестных источников» в их настройках.

FYI, я только что прочитал об этом на http://blog.vivekpanyam.com/evolve-seamlessly-deploy-android-apps-to-users/?hn

Evolve – это библиотека для разработчиков Android, которая позволяет им развертывать новые версии приложения без прохождения через Google Play или попросить пользователей загрузить обновление. Он работает, используя генерацию отражения и динамического байт-кода для «трюков» Android в запуск нового кода.

Его альфа, хотя, но это кажется возможным через множество обручей. Я сомневаюсь, что это стоит, за исключением вредоносного программного обеспечения.