Из-за this annoying Android limitation Мне нужно, чтобы пользователи переустанавливали мое приложение, чтобы разрешения манифеста были обнаружены другими приложениями.Переустановить приложение apk программно, не загружая
Это уже разочаровывает пользователя, но кроме того, я не вижу способа переустановки моего приложения из apk, хранящегося в/data/app, и поэтому мне пришлось бы загружать ту же версию в хранилище перед тем, как начать обычную установку.
Я с нетерпением жду, чтобы кто-то сказал мне, что я пропускаю что-то очевидное! Я нарисовал пробел ...
Заранее спасибо.
Пожалуйста, задайте вопрос, если вы хотите его решить! Приветствия.
EDIT: С комментариями @hackbod в виду, вы можете использовать следующий код, чтобы начать диалог установки.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(this.getApplicationInfo().sourceDir)),
"application/vnd.android.package-archive");
startActivity(intent);
На моем устройстве Jelly Bean, это представляет два варианта: установки пакета и Проверка и установка. Я не знаю, если последний будет иметь дело с вопросом:
- Установка приложение таким образом, вероятно, удалить права собственности на него из Play Маркета
Мое приложение является бесплатным, так Я не могу проверить платную вопрос:
- Заметим, однако, если ваше приложение вперед заблокирован (что неизбежно для всех платных приложений, начиная с JB, из-за шифрования приложения), то это не будет работать becau себе приложение исполняемый файл не доступен для чтения других
Хотя hackbod заканчивается с читабельным другими ", который наводит на мысль, что если вы выполняете это через свой собственный код, для вашего собственного приложения, читает? Пожалуйста, поправьте меня, если вы сможете проверить это, и я ошибаюсь.
Возможно, вы сможете скопировать его из/data/app на карту памяти. Хотя вы не можете просматривать этот каталог, файлы, которые он содержит, обычно читабельны, хотя это не гарантировано (и это не всегда место установки). Альтернативой может быть не использование системы разрешений, а попытка выполнить собственную проверку подлинности пакета запроса. –
Спасибо Крис. Мое приложение должно быть установлено на устройстве, иначе оно не будет работать правильно, поэтому у меня есть минимальные заботы о месте установки пользователя. Я предполагаю, что это единственное соображение, о котором вы говорили? Кроме того, поскольку/data/app читается, я мог проверить, что apk находился там до чего-либо еще. Из моего поиска я не могу найти способ перенести apk из этого местоположения, не используя функции root ... Хотелось бы узнать, есть ли способ ... Я не уверен, что вы имели в виду под моей «собственной аутентификацией»? Приветствия. – brandall
Если это доступно для чтения (как обычно), вам не нужен корень, чтобы скопировать его туда, где вам разрешено писать (например, sdcard, с соответствующим разрешением манифеста). Однако/data/app не всегда находится там, где он устанавливается. И иногда имя файла apk изменяется во время установки. Вы можете определить местоположение и установленное имя из /data/system/packages.xml, но в этот момент вы довольно глубоко входите в частные внутренние функции, которые не могут быть в будущем доказательством. На самом деле, повторная загрузка - это, вероятно, ваш лучший выбор - по крайней мере, это вариант как резервный. –