Android 12唤起手机号时PendingIntent可变性标志设置及崩溃解决方法
问题原因
Android 12(API 31)及以上系统要求,所有PendingIntent在创建时必须明确指定FLAG_IMMUTABLE或FLAG_MUTABLE可变性标志。
本次崩溃发生在getHintPickerIntent方法执行过程中,该方法返回的PendingIntent由Google Play Services Auth库内部完成创建,低版本的该库未适配Android 12的这项要求,创建时未添加对应标志直接触发异常,你无法在获取到返回结果后再修改标志解决问题。
解决方案
- 方案一(推荐):升级Google Play Services Auth依赖到适配版本
将项目中com.google.android.gms:play-services-auth的依赖版本升级到19.2.0及以上即可,该版本开始官方已经在内部创建PendingIntent时主动添加了合规的可变性标志,原有业务代码无需修改即可正常运行。
示例gradle依赖配置:
dependencies { // 可替换为19.2.0以上的最新稳定版本 implementation 'com.google.android.gms:play-services-auth:20.7.0' }
- 方案二(临时兼容):如果暂时无法升级依赖,可以先将项目的
targetSdkVersion降到30(Android 11),即可规避Android 12的PendingIntent可变性校验规则,后续具备升级条件时再恢复目标SDK版本即可。
内容的提问来源于stack exchange,提问作者chathura
相关产品推荐
相关产品推荐

