Mar*_*rat 62 android android-context package-info
从 API 级别 33 开始,getPackageInfo(String, int)
PackageManager 类的方法已被弃用。文档建议改为使用getPackageInfo(String, PackageInfoFlags)
。但该功能仅适用于 API 级别 33。
我当前的代码:
val pInfo = context.packageManager.getPackageInfo(context.packageName, 0)
Run Code Online (Sandbox Code Playgroud)
现在应该是这样吗?
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)
}
}
Run Code Online (Sandbox Code Playgroud)
mtr*_*kal 59
如果您使用 Kotlin,您可以向您的项目添加扩展功能:
fun PackageManager.getPackageInfoCompat(packageName: String, flags: Int = 0): PackageInfo =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(flags.toLong()))
} else {
@Suppress("DEPRECATION") getPackageInfo(packageName, flags)
}
Run Code Online (Sandbox Code Playgroud)
packageManager.getPackageInfoCompat(packageName)
如果需要的话,只需调用或添加另一个标志即可。
Com*_*are 21
现在应该是这样吗?
是的,尽管我已经放弃了使用的做法,TIRAMISU
转而支持实际的底层Int
.
理想情况下,谷歌会为这些变化添加一些内容PackageManagerCompat
,也许他们现在会这样做,因为 Android 13 已经开始向用户提供。
归档时间: |
|
查看次数: |
31893 次 |
最近记录: |