这个问题here描述了我的问题,除了我正在使用Xamarin。
更新:为了清楚起见,我看到的问题是下面列出的第一个调用不会在Xamarin中编译为最新的SDK。第二个崩溃的任何Android构建少于13。我必须支持版本回到9,所以我需要一种方法来检测软件包,工作在所有版本,因为9。
CALL 1:针对Android 13时无法编译
packageinfo = PackageManager.GetPackageInfo(PackageName, 0);
CALL 2:在任何Android版本低于13崩溃
packageinfo = PackageManager.GetPackageInfo(PackageName, PackageManager.PackageInfoFlags.Of(0));
链接问题通过抑制机制解决问题:
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)
}
这个问题是,这可以在Xamarin中通过条件编译来实现吗?
SDK的“if”检查不起作用,因为包含弃用代码的块将无法编译。
如果没有,是否有其他方法可以检测到一个软件包,在13和前13工作?
1条答案
按热度按时间5vf7fwbs1#
在Xamarin中,您可以尝试以下代码: