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

Portable Xamarin Forms适配Android 34时PendingIntent报错求助

临时解决方案(Portable Xamarin Forms项目适配Android 34)

针对你升级Android目标平台到34后遇到的PendingIntent flag报错,结合Portable项目(PCL)的限制,给出以下临时修复方案:

1. 手动指定PendingIntent的Flag值

由于旧版本Xamarin.Android未封装Mutable/Immutable枚举项,直接使用对应的数值常量强制转换即可:

  • 需要可变的PendingIntent:使用(PendingIntentFlags)0x00000040(对应Android原生FLAG_MUTABLE)
  • 需要不可变的PendingIntent:使用(PendingIntentFlags)0x00000080(对应Android原生FLAG_IMMUTABLE)

示例代码:

// 创建不可变的PendingIntent(根据业务场景选择对应flag)
var pendingIntent = PendingIntent.GetActivity(
    Android.App.Application.Context,
    0,
    new Intent(Android.App.Application.Context, typeof(MainActivity)),
    (PendingIntentFlags)0x00000080 | PendingIntentFlags.UpdateCurrent
);

2. 安装适配MonoAndroid11的AndroidX.Work.Runtime版本

放弃安装2.9.0.1版本,选择支持MonoAndroid11的2.7.1.5版本:

  • 卸载项目中已有的冲突Work相关包
  • 在NuGet包管理器中搜索Xamarin.AndroidX.Work.Runtime,手动选择2.7.1.5版本进行安装

3. 降级Firebase包至兼容版本

Xamarin.Firebase.Iid 121.1.0.7与MonoAndroid11不兼容,降级到适配版本:

  • 卸载现有高版本Firebase相关包
  • 安装Xamarin.Firebase.Iid 120.1.0.3,同时确保所有Firebase依赖包(如Messaging、Core等)版本统一,避免版本冲突

4. 清单文件补充兼容配置(针对第三方库问题)

如果报错来自第三方SDK(如Firebase Messaging)内部创建的PendingIntent,在AndroidManifest.xml中添加如下配置,强制指定默认flag:

<application android:label="YourAppName" ...>
    <!-- 配置Firebase消息默认使用IMMUTABLE flag -->
    <meta-data 
        android:name="firebase_messaging_pending_intent_flags" 
        android:value="immutable" />
</application>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:55:18