- Пишем свой Android Market
- Серверная часть
- Установка
- Обновление
- Удаление
- Обратная связь
- Русские Блоги
- Установка приложения под Android 8.0
- Так как бороться с этим разрешением?
- 1. Процесс установки приложения
- 2. Сначала обратитесь за разрешением
- 3. Нажмите кнопку, чтобы установить приложение
- 4. Проверьте, есть ли у вас разрешения для неизвестных источников приложения
- 5. Выполните процесс установки
- Вы почти закончили, но есть несколько вещей, на которые стоит обратить внимание:
- Интеллектуальная рекомендация
- Многослойная презентацияViewController Jap
- Распечатать список с конца до головы
- Типы данных и переменные
- Python Daily Practice (4) -идиомы заполняют музыку
- Установить приложение программно на Android
- Установка приложения программно на Android
- 14 ответов:
Пишем свой Android Market
В рамках работы над большим количеством android приложений появилось желание создать свой Android Market на локальном сервере (с шахматами и поэтессами).
Свой маркет должен решать две простые задачи:
- Распространение и обновление корпоративных приложений. У нас есть набор внутри корпоративных приложений, которые нельзя публиковать на Google Play. Сейчас пользователи оповещаются о новых версиях по емайлу, что не удобно.
- Бета тестирование заказных приложений на большой группе коллег, с обратной связью.
И так, нам необходимо реализовать небольшое Android приложение, которое будет скачивать список доступных приложений, проверять наличие обновлений для уже установленных, устанавливать/удалять приложения.
Серверная часть
Серверной частью приложения может быть как сервис с широким функционалом (регистрация пользователей, отчеты, разграничение доступа к приложениям), так и просто xml файл:
В моем случае серверной частью фактически выступает http шара.
Данный xml файл в приложении трансформируется в список приложений, доступных для установки.
Установка
Пользователь выбирает нужное ему приложение и устанавливает,
Маркет скачивает apk файл на флешку устройства и инициирует установку приложения, конечно, должна быть разрешена установка из сторонних источников.
Установить незаметно в фоне мы не можем, поэтому после выполнения данного кода:
Пользователь увидит стандартное окно установки приложений:
Обновление
Приложение Market может по определенному интервалу проверять наличие новых версий, делается это достаточно просто, так как доступен список всех установленных приложений:
В случае необходимости обновления приложения, повторяем процесс Установки, приложение будет обновлено.
Удаление
Удалить программу лучше из интерфейса нашего маркета, чтобы не заставлять пользователя выискивать тестируемое приложение среди всех его программ, для этого достаточно вызвать этот код:
Обратная связь
Получение сообщений об ошибках, вместе с логом ошибки, очень важно для разработчика, особенно на этапе тестирования приложения, добавим функцию автоматического сбора этой информации через Маркет.
Для этого в каждое приложение, распространяемое через наш Маркет добавляем следующий класс
Как видно из кода, это хендлер, который получает ошибки (Exception), генерит строку со стеком, сохраняет ее в локальный файл и отправляет ошибку в виде броадкаст сообщения.
А в Application классе включаем переадресацию всех сообщений об ошибках в этот хендлер
Таким образом, если в тестируемои приложении происходит ошибка, то перед смертью пишется сообщение в лог и посылается броадкаст сообщение в маркет.,
Перед передачей приложения заказчику, этот код удаляется (комментируется).
В самом Маркете мы просто отлавливаем данное сообщение:
И дальше маркет уже может переслать это сообщение на почту разработчику, загрузить в какой нибудь веб-сервис или попросить пользователя добавить комментарий к ошибке
Я надеюсь, данный пример поможет многим начинающим разработчикам, разобраться, как написать свой универсальный велосипед для бета тестирования приложений и централизованному сбору статистики ошибок.
ps: В статье использован исходный код и картинки взятые из прототипа приложения.
Источник
Русские Блоги
Установка приложения под Android 8.0
каталог
Предисловие. После обновления системы Android до версии 8.0 Google удалил коммутатор для установки неизвестных приложений (все приложения, которые первоначально включили этот коммутатор, предоставили бы это разрешение), и заменил его списком управления приложениями из неизвестных источников. Установите разрешения для приложений из неизвестных источников. Если вы не обрабатываете разрешения этого неизвестного источника, он заблокирует внутреннее приложение, чтобы начать процесс установки, что приведет к тому, что приложение вообще не сможет быть обновлено и может быть загружено только снова на рынке приложений.
Так как бороться с этим разрешением?
1. Процесс установки приложения
1. Сначала поговорим о процессе установки до 8.0:
Скачайте приложение с сервера на локальный >> Откройте код приложения установки >> Установка завершена
2. Процесс установки приложения после 8.0:
Загрузите приложение с сервера на локальный >> Код, чтобы открыть интерфейс приложения источника местоположения установки >> Предоставить разрешения >> Откройте код приложения установки >> Установка завершена
Где «Код открывает интерфейс приложения источника местоположения установки» будет блокировать процесс установки приложения,Процесс установки не может продолжаться, пока вы не получите разрешение на установку неизвестных приложений.
3. Чтобы смоделировать загрузку обновлений приложений из Интернета, я поместил приложение непосредственно во внутреннее хранилище, нажал «Установить» и непосредственно выполнил процесс установки 8.0.
2. Сначала обратитесь за разрешением
Обработка прав чтения SD-карты, код выглядит следующим образом:
3. Нажмите кнопку, чтобы установить приложение
Код прост, кнопка для выполнения установки
4. Проверьте, есть ли у вас разрешения для неизвестных источников приложения
Комментарий очень ясен, здесь упоминаются только ключевые моменты: boolean b = getPackageManager (). CanRequestPackageInstalls (); эта строка кода проверяет, есть ли у вас разрешения для неизвестных источников приложения. Если у вас есть прямая установка, Откройте интерфейс неизвестного источника приложения без него. Обратите внимание, что это не то же самое, что подать заявку на разрешения во время выполнения (Многие люди путают разрешения во время выполнения!)
Обработайте результат обратного вызова в onActivityResult (), код выглядит следующим образом:
5. Выполните процесс установки
Выполните код установки:
Здесь нужно сказать, что параметр uri в intent.setDataAndType (uri, «application / vnd.android.package-archive») также должен быть адаптирован для систем 7.0 и выше, а поставщик должен быть установлен.
Я помещаю приложение прямо в корневой каталог:
Поставщик настроен следующим образом:
Файл file_paths_public.xml выглядит следующим образом:
путь = «.» означает корневой каталог внутреннего хранилища
Это введено в части провайдера, поэтому я не буду повторять это здесь.
Вы почти закончили, но есть несколько вещей, на которые стоит обратить внимание:
1. Для установки приложений из внутреннего хранилища необходимы разрешения времени выполнения SDCard. Если у вас нет этого разрешения, появится сообщение об ошибке разбора!
2. При запуске интерфейса установки intent.setDataAndType (uri, «application / vnd.android.package-archive»), пожалуйста, не забудьте выполнить адаптацию 7.0 в uri!
3. При тестировании apk, apk, помещенный во внутреннюю директорию хранилища, должен быть собран через build >> Build Apk (s), в противном случае приложение получит запрос, что оно не установлено во время установки! Смотри ниже
Поэтому, когда вы решите адаптироваться к 8.0, вы должны заняться другими адаптациями!
Интеллектуальная рекомендация
Многослойная презентацияViewController Jap
. Недавно, проект использует многоэтажные прыжки [A presentViewController: B animated: YES] [B presentViewController: C animated: YES] . Проблема в том, где: как это идет прямо к? Я не нашел ме.
Распечатать список с конца до головы
В случае, когда таблица цепи не может изменять дисплей, данные хранения стека могут рассматриваться с рекурсивным методом. Разрешить модификацию структуры ссылки.
Типы данных и переменные
тип данных Компьютерная программа может обрабатывать различные значения. Однако компьютеры могут обрабатывать гораздо больше, чем числовые значения. Они также могут обрабатывать различные данные, таки.
Python Daily Practice (4) -идиомы заполняют музыку
оглавление 1. Одно место 2. Случайное расположение 3. Добавьте баллы для оценки 4. Получение файла 5. Установите уровень сложности. 6. Срок завершения 7. Выберите заполнение пропусков. 1. Одно место Н.
Источник
Установить приложение программно на Android
Мне интересно знать, возможно ли программно установить динамически загруженный apk из пользовательского приложения для Android.
Вы можете легко запустить ссылку на магазин Play Play или приглашение к установке:
Однако вы не можете установить .apks без явного разрешения пользователя ; нет, если устройство и ваша программа не рутированы.
У меня была такая же проблема, и после нескольких попыток у меня все получилось. Я не знаю почему, но установка данных и типа по отдельности провалила мои намерения.
Решения, предоставленные на этот вопрос, все применимы к targetSdkVersion с 23 и ниже. Однако для Android N, то есть уровня API 24 и выше, они не работают и аварийно завершают работу со следующим исключением:
Это связано с тем, что, начиная с Android 24, Uri изменился адрес для загруженного файла. Например, установочный файл с именем, appName.apk хранящимся в основной внешней файловой системе приложения с именем пакета, com.example.test будет иметь вид
для API 23 и ниже, тогда как что-то вроде
за API 24 и выше.
Более подробную информацию об этом можно найти здесь, и я не собираюсь проходить через это.
Чтобы ответить на вопрос targetSdkVersion о 24 и выше, необходимо выполнить следующие шаги: Добавьте следующее в AndroidManifest.xml:
2. Добавьте следующий paths.xml файл в xml папку res в src, main:
Это pathName то, что показано в приведенном выше примере содержимого и pathValue является фактическим путем в системе. Было бы неплохо поставить «.» (без кавычек) для pathValue в приведенном выше, если вы не хотите добавлять какие-либо дополнительные подкаталоги.
Напишите следующий код для установки apk с именем appName.apk в основной внешней файловой системе:
Разрешение также не требуется при записи в личный каталог вашего приложения во внешней файловой системе.
Я написал здесь библиотеку автообновления, в которой я использовал вышеизложенное.
Источник
Установка приложения программно на Android
Мне интересно узнать, можно ли программно установить динамически загружаемый apk из пользовательского приложения для Android.
14 ответов:
вы можете легко запустить ссылку на рынок или запрос на установку:
однако, вы не можете установить .АПК без пользователя разрешение; нет, если устройство и ваша программа не укоренены.
У меня была такая же проблема и после нескольких попыток, это сработало для меня этот путь. Я не знаю, почему, но установка данных и тип отдельно испортили мое намерение.
Ну, я копнул глубже, и нашел источники приложения PackageInstaller из источника Android.
из манифеста я обнаружил, что он требует разрешения:
и сам процесс установки происходит после подтверждения
все решения, представленные на этот вопрос, применимы к targetSdkVersion s из 23 и ниже. Для Android N, т. е. API уровня 24 и выше, однако, они не работают и сбой со следующим исключением:
это связано с тем, что начиная с Android 24, в Uri для адресации загруженный файл изменился. Например, установочный файл с именем appName.apk хранится в основной внешней файловой системе приложения с именем пакета com.example.test будет как
на API 23 и ниже, тогда как что-то вроде
на API 24 и выше.
более подробную информацию об этом можно найти здесь и я не собираюсь проходить через это.
чтобы ответить на вопрос для targetSdkVersion на 24 и выше, нужно выполнить следующие действия: Добавить в AndroidManifest.XML-код:
2. Добавить следующее к на res в src, main:
The pathName это показано в примерном примере uri контента выше и pathValue — это фактический путь в системе. Было бы неплохо поставить «.»(без кавычек) для pathValue в приведенном выше, если вы не хотите добавлять какой-либо дополнительный подкаталог.
напишите следующий код для установки apk с именем appName.apk на главную внешних файловая система:
разрешение также не требуется при записи в личный каталог вашего собственного приложения на внешней файловой системе.
я написал библиотеку AutoUpdate здесь в котором я использовал выше.
Я просто хочу поделиться тем фактом, что мой файл apk был сохранен в каталоге «данные» моего приложения и что мне нужно было изменить разрешения на файл apk, чтобы он был читаемым в мире, чтобы позволить ему быть установленным таким образом, иначе система бросала «ошибка разбора: есть проблема разбора пакета»; поэтому использование решения от @Horaceman, которое делает:
1 — добавить AndroidManifest.xml :
2 — добавьте следующие пути.xml-файл в папку xml (если он не существует, создайте его) на res в src, main
путь-это то, что показано в Примере URI примерного содержимого выше и pathValue является фактическим путем в системе. Было бы неплохо поставить «.»для pathValue в приведенном выше, если вы не хотите добавлять какие-либо дополнительные подкаталог.
3 — напишите следующий код для запуска файлов Apk:
и благодаря Али Немати Хаяти, чтобы быть первым, чтобы написать решение профиль Али-nemati-Хаяти
Да, это возможно. Но для этого вам нужен телефон для установки непроверенных источников. Например, приложений это. Я думаю, что лучшее, что вы можете сделать, это проверить, если приложение присутствует и отправить намерение для Android Market. вы должны использовать что-то схему url для android Market.
Я не знаю точно, как начать деятельность, но если вы начинаете деятельность с такого рода url. Он должен открыть android market и дать вам выбор для установки приложения.
стоит отметить, что если вы используете DownloadManager чтобы начать загрузку, обязательно сохраните его на внешний носитель, например, setDestinationInExternalFilesDir(c, null, » ).apk»; . Намерение с типом пакета-архива, похоже, не нравится content: схема используется с загрузками во внутреннее расположение, но нравится file: . (Попытка обернуть внутренний путь в объект File, а затем получить путь также не работает, хотя это приводит к file: url, так как приложение не будет анализировать apk; похоже, что это должно быть внешний.)
другое решение, которое не требует жесткого кода получающего приложения и поэтому более безопасно:
просто расширение, если кому-то нужна библиотека тут этой может помочь. Спасибо Рагхав
UpdateNode предоставляет API для Android для установки пакетов APK из другого приложения.
Вы можете просто определить свое обновление в интернете и интегрировать API в свое приложение — вот и все.
В настоящее время API находится в бета-состоянии, но вы уже можете сделать некоторые тесты самостоятельно.
Кроме того, UpdateNode предлагает также отображать сообщения, хотя система — довольно полезно, если вы хотите сказать что-то важное для ваших пользователей.
Я являюсь частью команда разработчиков клиента и я использую по крайней мере функциональность сообщений для моего собственного приложения для Android.
попробуйте это — Напишите на Манифесте:
Источник