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

PackageManager.QueryIntentActivities()报错:ResolveInfoFlags相关CS1061问题排查

问题:Xamarin.Android适配API 33时queryIntentActivities报错CS1061

API level 33中queryIntentActivities(Intent intent, int flags)已被弃用,官方要求改用接收ResolveInfoFlags参数的重载方法,但在编写Xamarin.Android代码时,Visual Studio抛出错误:

CS1061: 'PackageManager' 不包含接受第一个参数类型为'PackageManager'的'ResolveInfoFlags'定义

相关代码如下:

private bool IsThereAnAppToTakePictures()
{
    Intent intent = new Intent(Android.Provider.MediaStore.ActionImageCapture);
    System.Collections.Generic.IList<ResolveInfo> availableActivities = ((int)Android.OS.Build.VERSION.SdkInt > 32) ? PackageManager.QueryIntentActivities(intent, PackageManager.ResolveInfoFlags) : 
        PackageManager.QueryIntentActivities(intent, PackageInfoFlags.MatchDefaultOnly);
    return availableActivities != null && availableActivities.Count > 0;
}

错误原因及修复方案

你犯了两个核心错误:

  1. ResolveInfoFlags是枚举类型,需传递具体枚举值而非类型本身:和旧API的PackageInfoFlags.MatchDefaultOnly对应,新API应使用ResolveInfoFlags.MatchDefaultOnly。
  2. Xamarin.Android中API 33的重载要求正确的参数类型:需确保项目SDK版本支持API 33,否则无法识别新的重载方法。

修正后的代码:

private bool IsThereAnAppToTakePictures()
{
    Intent intent = new Intent(Android.Provider.MediaStore.ActionImageCapture);
    IList<ResolveInfo> availableActivities;

    if ((int)Android.OS.Build.VERSION.SdkInt >= 33)
    {
        // API 33+ 使用新重载,传入具体的ResolveInfoFlags枚举值
        availableActivities = PackageManager.QueryIntentActivities(intent, ResolveInfoFlags.MatchDefaultOnly);
    }
    else
    {
        // 旧版本保留原有参数逻辑
        availableActivities = PackageManager.QueryIntentActivities(intent, PackageInfoFlags.MatchDefaultOnly);
    }

    return availableActivities != null && availableActivities.Count > 0;
}

额外注意:

  • 确认项目目标框架已设置为Android 13(API 33)或更高,并安装了对应版本的Xamarin.Android SDK包。
  • 若使用旧版Xamarin,需更新到支持API 33的版本才能使用ResolveInfoFlags相关API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:45:44