等效于API 25及更低版本中的MANAGE_UNKNOWN_SOURCES_ACTIVITY

时间:2019-12-22 11:00:33

标签: android

我的应用程序是侧面加载的,并且正在实现一些功能,这些功能将下载并安装更新的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的软件包安装程序。

1 个答案:

答案 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)