我Parse Error : There is a problem parsing the package.
在Android-8上进行测试时遇到了这个问题。我有相同签名的apk。没有版本号和版本名的所有内容都是相同的。当我手动安装应用程序时,它正在安装,但是当我以编程方式下载和安装更新时,会发生此错误。然后我找到了问题的原因。
有一个选项可以检查canRequestPackageInstalls()
当此方法返回true时,则表示应用程序已成功安装。就我而言,它总是返回false。
因此,我首先进行检查,然后让用户下载并安装更新。
在onCreate()中
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (!packageManager.canRequestPackageInstalls()) {
startActivityForResult(
Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).setData(
Uri.parse(String.format("package:%s", packageName))
), requestCodeqInstallPackage
)
} else {
canInstallPackage = true
}
}
在onActivityResult()中
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
if (requestCode == requestCodeqInstallPackage && resultCode == Activity.RESULT_OK) {
if (packageManager.canRequestPackageInstalls()) {
canInstallPackage = true
}
} else {
canInstallPackage = false
Toast.makeText(mContext, "Auto update feature will not work", Toast.LENGTH_LONG)
.show()
}
}
然后在需要安装更新时-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if(canInstallPackage){
doInstallAppProcess()
}else{
// generate error message
}
}
希望它会帮助某人。