"Не удалось обработать пакет" при запуске Apk
Алгоритм:
- Get методом приложение получает Apk файл
- Файл сохраняется в памяти устройства
- Инициализируется и запускается Intent
Ожидаемый результат:
Установка приложения из Apk файла
Фактический результат:
Появление окна "Не удалось обработать пакет"
Так же нет логов ошибок, при появление данного окна.
Код:
val myReq: StringRequest = object : StringRequest(
Method.GET,
FILE_URL,
Response.Listener { response ->
installUpdate(response)
},
Response.ErrorListener {
Log.e(LOG_TAG, "error -> ${it?.message} | ${it?.networkResponse?.statusCode} ")
}
)
private fun installUpdate(it: String) {
val FILE_NAME = "foobar.apk"
val file = File(
context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS),
FILE_NAME
)
if(!file.exists()){
file.createNewFile()
}
file.writeBytes(it.toByteArray())
val intent = Intent(Intent.ACTION_VIEW)
val data = FileProvider.getUriForFile(
context,
BuildConfig.APPLICATION_ID + ".provider",
file
);
intent.setDataAndType(data, "application/vnd.android.package-archive")
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
}
Буду рада любой помощи!
Ответы (1 шт):
Автор решения: MyNameIsKitsune
→ Ссылка
Попробуй таким образом, но я не уверен сработает, ли
installUpdate("https://foo.bar/")
private fun installUpdate(url: String) {
val FILE_NAME = "foobar.apk"
try (final InputStream in = new URL(url).openStream()) {
val path = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)+"/"+FILE_NAME
Path outputFile = Paths.get(path);
Files.copy(in, outputFile, StandardCopyOption.REPLACE_EXISTING);
val file = File(path)
} catch (Exception e) {
e.printStackTrace();
}
val intent = Intent(Intent.ACTION_VIEW)
val data = FileProvider.getUriForFile(
context,
BuildConfig.APPLICATION_ID + ".provider",
file
);
intent.setDataAndType(data, "application/vnd.android.package-archive")
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
}
