以编程方式获取安卓手机的电话号码

新手上路,请多包涵

如何以编程方式获取运行我的 android 应用程序的设备的电话号码?

原文由 jkap 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 536
2 个回答

代码:

 TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

所需权限:

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

注意事项:

根据高度评价的评论,有一些警告需要注意。这可以返回 null"" 甚至 "???????" ,它可以返回一个不再有效的陈旧电话号码。如果你想要唯一标识设备的东西,你应该使用 getDeviceId() 代替。

原文由 Alex Volovoy 发布,翻译遵循 CC BY-SA 3.0 许可协议

首先像这样初始化您的登录意图

private val signInIntent = registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { result ->
        try {
            val phoneNumber = Identity.getSignInClient(requireContext()).getPhoneNumberFromIntent(result.data)
            // Note phone number will be in country code + phone number format
        } catch (e: Exception) {
        }
    }

要打开谷歌播放意图并显示与谷歌帐户关联的电话号码,请使用此

val phoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder()
            .build()
        Identity.getSignInClient(requireContext())
            .getPhoneNumberHintIntent(phoneNumberHintIntentRequest)
            .addOnSuccessListener { pendingIntent ->
                signInIntent.launch(IntentSenderRequest.Builder(pendingIntent).build())
            }.addOnFailureListener {
                it.printStackTrace()
            }

注意

  1. 如果用户禁用电话号码共享,这将失败。如果是这样,用户必须从“设置”->“谷歌”->“自动填充”->“电话号码共享”中启用它
  2. 如果您使用的是没有播放服务的模拟设备,这将不起作用

原文由 Reyaz Ahmad 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题