You need to enable JavaScript to run this app. Android 基于ActivityResultLauncher实现联系人选择的Uri获取空指针问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Android 基于ActivityResultLauncher实现联系人选择的Uri获取空指针问题咨询

ActivityResultLauncher重构联系人选择功能时的Uri获取异常问题

已验证可正常运行的环节

  • 可通过构造的Intent成功拉起系统联系人选择页面
  • 支持用户在选择页完成指定联系人的选取操作

累计4小时对照官方文档排查的尝试路径与阻碍

  • 方案1:声明ActivityResultLauncher入参为String、Uri类型,搭配ActivityResultContracts.GetContent()契约使用。由于联系人选择场景对应ContactsContract.PickContact流程,无匹配的固定MIME类型,无法传入有效启动参数,选择页拉起失败
  • 方案2:使用自定义Intent直接拉起联系人选择页。完成联系人选取操作后,始终无法从回调结果中提取到可用的联系人Uri
  • 文档校验:公开官方示例仅覆盖带明确MIME类型的通用内容选择场景(如本地图片选取),无联系人选择场景的对应实现指引

当前代码崩溃的完整触发链路

  • 代码内定义成员变量uriData,初始值固定为null
  • 结果回调逻辑中,直接将空值的uriData设置为回调返回Intent的data值
  • 后续调用getContentResolver().query()方法时,直接把空的uriData作为查询参数传入,触发空指针异常
  • 最终导致InvoiceActivity从后台恢复显示时应用直接崩溃

核心逻辑缺陷:回调阶段未从实际返回的结果Intent中提取有效联系人Uri,反而将硬编码的空值传入后续查询流程


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 03:45:07