从API级别33开始,PackageManager类的getPackageInfo(String, int)
方法已弃用。文档建议改用getPackageInfo(String, PackageInfoFlags)
。但该函数仅在API级别33可用。
我的当前代码:
val pInfo = context.packageManager.getPackageInfo(context.packageName, 0)
"现在就该这样吗"
val pInfo = context.getPackageInfo()
@Suppress("DEPRECATION")
fun Context.getPackageInfo(): PackageInfo {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
packageManager.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(0))
} else {
packageManager.getPackageInfo(packageName, 0)
}
}
2条答案
按热度按时间woobm2wo1#
这就是现在的情况吗?
是的,尽管我已经放弃了使用
TIRAMISU
的做法,而改用实际的底层Int
。理想情况下,谷歌会为
PackageManagerCompat
添加一些东西来实现这些变化,也许现在Android 13已经开始向用户发货了。q8l4jmvw2#
如果你正在使用Kotlin,你可以添加扩展函数到你的项目中:
然后调用
packageManager.getPackageInfoCompat(packageName)
或添加另一个标志(如果需要)。