使用AndroidX Activity Result API申请权限报requestCode仅可使用低16位错误
异常原因
这个报错是因为你项目中appcompat和activity-ktx依赖版本不兼容导致的:
androidx.appcompat:appcompat:1.2.0内置依赖的fragment版本低于1.3.0,这类版本对requestCode有强制校验,要求数值必须在低16位范围内,也就是最大值不能超过65535androidx.activity:activity-ktx:1.4.0-rc01属于较高版本,Activity Result API自动生成的requestCode会超出上述65535的限制,触发校验异常
解决方案
你可以任选以下一种方案修复:
方案1:升级appcompat版本(推荐)
将appcompat依赖升级到1.4.0及以上的稳定版本,新版已经调整了requestCode校验规则,适配高版本Activity Result API的逻辑:
implementation 'androidx.appcompat:appcompat:1.6.1' implementation("androidx.activity:activity-ktx:1.4.0-rc01")
修改后重新同步Gradle即可。
方案2:降低activity-ktx版本
如果你暂时不想升级appcompat版本,可以将activity-ktx降级到1.2.x版本,该版本生成的requestCode符合低版本appcompat的校验规则:
implementation 'androidx.appcompat:appcompat:1.2.0' implementation("androidx.activity:activity-ktx:1.2.4")
修改后重新同步Gradle即可。
内容的提问来源于stack exchange,提问作者lauytao fing
相关产品推荐
相关产品推荐

