我的应用程序是侧面加载的,并且正在实现一些功能,这些功能将下载并安装更新的APK。
在API 26及更高版本中,我可以检查应用程序是否具有相关的“允许来自此(未知)源”权限。如果应用程序没有该权限,则该应用程序可以将用户重定向到相关的安全设置,并在继续安装之前侦听结果-根据以下代码:
if(Build.VERSION.SDK_INT >= 26 && !getPackageManager().canRequestPackageInstalls())
{
Intent unknownSourcesIntent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
unknownSourcesIntent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(unknownSourcesIntent, MANAGE_UNKNOWN_SOURCES_ACTIVITY);
}
ACTION_MANAGE_UNKNOWN_APP_SOURCES是在API 26中引入的。
在API 25及以下版本中,我可以做类似的事情吗?
当前,如果未授予该权限,则Android会提示用户管理未知源,但是如果用户启用了相关设置,我的应用程序将不会收到结果,无法自动启动更新的APK的软件包安装程序。
答案 0 :(得分:0)
在SDK 26以下,不需要,您只需要正确启动下载的APK即可。
val intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.fromFile(File(state.data)), "application/vnd.android.package-archive")
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
// Without this flag android returned a intent error!
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
requireContext().startActivity(intent)