React Native集成Twilio:Android13拨打电话因PendingIntent标记缺失崩溃求助
问题分析
崩溃原因是Android 13(API 31+)强制要求创建PendingIntent时必须指定FLAG_IMMUTABLE或FLAG_MUTABLE标记,而你使用的react-native-twilio-programmable-voice库中,CallNotificationManager.java的createHangupNotification方法(第154行)创建PendingIntent时未添加该标记,触发了IllegalArgumentException。
解决方案
方案1:升级库到修复版本
检查你使用的hoxfon/react-native-twilio-programmable-voice仓库的feat/twilio-android-sdk-5分支是否已提交该问题的修复代码。若有,直接拉取最新代码重新安装依赖:
npm install github:hoxfon/react-native-twilio-programmable-voice#feat/twilio-android-sdk-5 --force
之后清理缓存并重建项目:
cd android && ./gradlew clean cd .. && npx react-native run-android
方案2:手动修改库代码(临时修复)
如果库暂未修复,直接修改node_modules中的对应文件:
- 找到路径:
node_modules/react-native-twilio-programmable-voice/android/src/main/java/com/hoxfon/react/RNTwilioVoice/CallNotificationManager.java - 定位到
createHangupNotification方法中创建PendingIntent的代码,原代码类似:
PendingIntent.getActivity(context, 0, hangupIntent, PendingIntent.FLAG_UPDATE_CURRENT);
- 修改为添加
FLAG_IMMUTABLE(挂断通知无需可变PendingIntent,推荐使用该标记):
// 确保导入类 import android.app.PendingIntent; // 修改后的代码 PendingIntent.getActivity(context, 0, hangupIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
- 若需兼容更低版本(你的minSdkVersion为21),可改用AndroidX兼容类:
import androidx.core.app.PendingIntentCompat; // 替换创建逻辑 PendingIntent hangupPendingIntent = PendingIntentCompat.getActivity( context, 0, hangupIntent, PendingIntent.FLAG_UPDATE_CURRENT, false // false对应IMMUTABLE,true对应MUTABLE );
- 修改完成后重建项目:
cd android && ./gradlew clean cd .. && npx react-native run-android
额外说明
你之前添加的androidx.work相关依赖与本次崩溃无关,可移除这些不必要的配置。
内容的提问来源于stack exchange,提问作者Md Javed Akhtar
相关产品推荐
相关产品推荐

