Android Java中Phone Number Hint无法获取手机号问题排查求助
Phone Number Hint API无法检测手机号的问题及解决方法
我正在使用Java开发Android应用,尝试实现Phone Number Hint功能,但每次执行代码都会进入addOnFailureListener回调。
代码片段
ActivityResultLauncher<IntentSenderRequest> phoneNumberHintIntentResultLauncher = registerForActivityResult( new ActivityResultContracts.StartIntentSenderForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { try { String phoneNumber = Identity.getSignInClient(Register.this).getPhoneNumberFromIntent(result.getData()); ed_number.setText(phoneNumber); } catch (ApiException e) { throw new RuntimeException(e); } } }); private void requestPhoneNumberHint() { GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build(); Identity.getSignInClient(Register.this) .getPhoneNumberHintIntent(request) .addOnSuccessListener(result -> { try { IntentSenderRequest req = new IntentSenderRequest.Builder(result).build(); phoneNumberHintIntentResultLauncher.launch(req); } catch (Exception e) { Log.e("===", "Launching the PendingIntent failed"); } }) .addOnFailureListener(e -> Log.e("===", "Phone Number Hint failed\n"+e.getMessage()+"\n")); }
错误日志
Phone Number Hint failed 16: [28438] No phone number is found on this device.
问题原因及解决方法
- 检查SIM卡状态:Phone Number Hint API优先读取SIM卡内的手机号,确保设备已插入有效且激活的SIM卡,且SIM卡内已写入手机号信息。
- 验证通讯录本机号码:部分设备会读取系统通讯录中标记为“本机号码”的条目,确认通讯录中已添加并验证本机手机号。
- 申请必要权限:
- Android 12及以上:需申请
READ_PHONE_NUMBERS权限,并在运行时获取用户授权; - Android 11及以下:需申请
READ_PHONE_STATE权限,同样需运行时授权。
- Android 12及以上:需申请
- 更新Google Play服务:该API依赖Google Play服务,确保设备上的Google Play服务已更新至最新版本。
- 排除区域/运营商限制:部分地区或运营商可能限制该API的功能,可尝试更换其他运营商的SIM卡进行测试。
内容的提问来源于stack exchange,提问作者MobDev
相关产品推荐
相关产品推荐

