Phone Number Hint无法返回手机号:最新版本调用报16号异常
解决Phone Number Hint新版API报异常16(No phone number is found on this device)的问题
针对你遇到的新版API请求手机号提示返回异常16,但旧版本在同一设备正常的问题,可尝试以下排查和解决方向:
1. 显式指定允许的国家/地区代码
新版GetPhoneNumberHintIntentRequest的默认行为与旧版存在差异,未指定国家代码时可能仅检索Google账号关联的已验证手机号,忽略SIM卡或系统存储的手机号。修改请求构建代码,添加目标国家的ISO 3166-1 alpha-2代码:
import java.util.Arrays; GetPhoneNumberHintIntentRequest getPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder() .setAllowedCountryCodes(Arrays.asList("CN")) // 替换为设备所在国家码 .build();
2. 验证设备上的手机号来源
新版API对手机号的验证要求更严格,需确保:
- 设备已登录关联手机号的Google账号,且该手机号完成验证
- SIM卡中的手机号已被系统正确识别(可在系统设置-关于手机-状态信息中确认)
- 多SIM卡设备需确认目标SIM卡的手机号已正常注册
3. 确认依赖库版本兼容性
检查play-services-identity依赖是否为最新稳定版,避免版本兼容问题:
// 在app模块的build.gradle中确认依赖版本 implementation 'com.google.android.gms:play-services-identity:18.0.0'
4. 完善回调的异常处理逻辑
补充异常状态码的捕获,帮助更精准定位问题:
try { String phoneNumber = Identity.getSignInClient(context).getPhoneNumberFromIntent(result.getData()); } catch (ApiException e) { Log.e("PhoneHintError", "状态码: " + e.getStatusCode() + ", 错误信息: " + e.getMessage()); }
内容的提问来源于stack exchange,提问作者Manoj Yadav
相关产品推荐
相关产品推荐

