Java Android以编程方式更新apk
我的手机上有一个应用程序。我试图调用intent并安装新版本的apk。我遇到了这样的错误:“解析包时出现问题”。如果我从手机中删除apk并手动安装apk,它可以正常工作。有什么问题Java Android以编程方式更新apk,java,android,Java,Android,我的手机上有一个应用程序。我试图调用intent并安装新版本的apk。我遇到了这样的错误:“解析包时出现问题”。如果我从手机中删除apk并手动安装apk,它可以正常工作。有什么问题 Intent intent = new Intent(Intent.ACTION_VIEW); Uri uri = FileProvider.getUriForFile(getApplicationContext(), BuildConfig.APPLICATION_ID + ".provider", new Fil
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = FileProvider.getUriForFile(getApplicationContext(), BuildConfig.APPLICATION_ID + ".provider", new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "ingfilm.apk"));
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);
这对我来说很有效:
intent.setDataAndType(
Uri.parse("file://" + context.getFilesDir().getAbsolutePath() + "/" + apk_file),
"application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
关键的区别可能是
.getAbsolutePath()
部分。编辑答案而不是使布局或措辞更好,这不是我们在Stackoverflow上所做的。相反,你应该在评论中提出建议,并让答案的原始作者进行更改。如果最初安装的应用程序是使用开发工具(如Android Studio)安装的,但更新包是使用不同的方法创建的(例如,build APK),那么签名将不同,这将导致错误。