我为我的应用实施更新操作。 .apk文件夹下载WebService,我尝试手动它工作,但在程序后下载.apk文件夹无法启动。我得到错误设备尝试安装它"程序安装停止"我该如何解决?。
textarea {
padding: 0;
}
答案 0 :(得分:1)
在Android 7.0之前,您必须使用file
Uri
,例如来自Uri.fromFile()
,ACTION_VIEW
或ACTION_INSTALL_PACKAGE
来请求安装APK。
答案 1 :(得分:0)
这不是您的问题的答案,但为了防止发生这种崩溃,您可以检查是否有任何应用程序来处理intent
如果没有为Intent
创建选择器:
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
startActivity(Intent.createChooser(intent,"Chooser"));
}
答案 2 :(得分:0)
根据我的测试,使用ACTION_VIEW
并不适用于所有手机。有些手机会抛出异常android.content.ActivityNotFoundException
尽管使用ACTION_INSTALL_PACKAGE
已经可靠地使用了我迄今为止测试过的手机。
答案 3 :(得分:0)
我如何管理下载
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.N){
outputFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "ABC.apk")
} else {
outputFile = File(filesDir, "ABC.apk")
}
安装时
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
val installIntent = Intent(Intent.ACTION_INSTALL_PACKAGE)
Timber.e(intent.getStringExtra("uri"))
val apkFile = File(filesDir, "ABC.apk")
val apkURI = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider",
apkFile )
installIntent.setDataAndType(apkURI, "application/vnd.android.package-archive")
installIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
installIntent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
startActivity(installIntent)
} else {
val installIntent = Intent(Intent.ACTION_VIEW)
installIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
Timber.e(intent.getStringExtra("uri"))
installIntent.setDataAndType(Uri.parse(intent.getStringExtra("uri")),
"application/vnd.android.package-archive")
}
在provider_paths.xml中
<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path name="file_paths" path="."/>
</paths>