【发布时间】:2020-05-12 23:49:14
【问题描述】:
我目前正在研究如何以编程方式更新和安装 APK 文件的解决方案 - 非常类似于 this 问题。我的应用不使用 Google 服务。
出于更新目的,具有升序版本的 APK 文件存储在内部服务器上,C# Web 服务返回 APK 文件的最新版本。
我用 Retrofit2 来做这个:
@Streaming
@GET("/ws/webservice.svc/getUpdate")
fun getUpdate(
@Query("Programm") program: String,
@Query("version") version: String,
@Query("test") test: Boolean
): Single<String>
和 LiveData:
override fun getUpdate() {
disposables += api.getUpdate(
program = context.getString(R.string.app_name),
version = context.getString(R.string.app_version),
test = isTest
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeBy(
onSuccess = {
liveData.value = GetUpdate(it)
},
onError = {
liveData.value = Error("Error getUpdate: " + it.message)
}
)
}
我面临的问题是该 API 调用的响应(这意味着 - 最新的 APK 文件)具有如下图所示的 base64String 表示 - 例如在浏览器中进行 API 调用时,仅服务器响应的一部分。
是否有可能在下载后从这个字符串表示生成一个“真实”的 APK 文件,所以之后我可能能够将它安装在设备上?我知道这很奇怪,但客户希望我为此目的重复使用相同的 Web 服务。
我发现了一个类似的问题here。在 Kotlin 中如何做到这一点?提前致谢。
【问题讨论】:
标签: android web-services kotlin apk