如何在Flutter的Android及iOS端获取用户手机号码
Flutter跨平台实现Android、iOS端获取用户本机手机号码方案
前置准备
首先需要使用第三方插件mobile_number完成能力支持,先在项目的pubspec.yaml文件中添加对应依赖,执行依赖安装命令即可。
平台权限配置
获取手机号需要系统权限授权,双端分别做如下配置:
- Android端:在
AndroidManifest.xml中添加读取电话状态权限
针对Android 6.0及以上系统,需要先动态申请该权限,用户授权后才能正常获取手机号。<uses-permission android:name="android.permission.READ_PHONE_STATE" /> - iOS端:在
Info.plist中添加通讯录访问权限说明,因为iOS获取手机号依赖通讯录相关能力:
注意iOS系统对获取手机号的限制较多,iOS 12及以上系统多数场景下无法直接获取到手机号,仅部分运营商SIM卡支持该能力。<key>NSContactsUsageDescription</key> <string>需要访问通讯录权限以获取本机手机号码</string>
核心代码实现
权限申请通过后,调用插件提供的接口即可获取手机号,参考代码如下:
final String mobileNumber = await MobileNumber.mobileNumber;
注意事项
- 接口为异步方法,需要在带
async修饰的函数中执行 - 接口返回值可能为空,需要做空值兼容处理:用户拒绝授权、设备无SIM卡、运营商限制、系统不支持等场景都会返回空值
- 若业务场景对手机号获取准确率要求较高,建议搭配手动输入手机号+短信校验的方案兜底
内容的提问来源于stack exchange,提问作者Ramesh Prabu
相关产品推荐
相关产品推荐

