You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin中getPackageInfo已废弃,求替代方案?

替代废弃的getPackageInfo方法判断应用是否安装

从Android API 33(Tiramisu)开始,PackageManager.getPackageInfo(String, int)方法被废弃,官方推荐使用接收PackageManager.PackageInfoFlags参数的重载方法替代。

以下是适配新旧API版本的Kotlin实现代码:

protected fun isPackageInstalled(packageName: String?): Boolean {
    packageName ?: return false
    return try {
        val packageManager = application.packageManager
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            packageManager.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(0))
        } else {
            @Suppress("DEPRECATION")
            packageManager.getPackageInfo(packageName, 0)
        }
        true
    } catch (e: PackageManager.NameNotFoundException) {
        false
    }
}

关键说明:

  • 先对packageName做空值判断,替代原代码中的!!强制非空,避免空指针异常
  • API 33及以上版本使用PackageInfoFlags.of(0)构建flags参数,对应原方法中0的含义(不请求额外包信息)
  • 低版本保留原废弃方法,添加@Suppress("DEPRECATION")注解消除编译器警告

内容的提问来源于stack exchange,提问作者Eduard Unruh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:30:54