私は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
}
}
それが誰かを助けることを願っています。