Flutter中如何获取设备序列号?使用device_info_plus遇返回未知问题
Flutter中device_info_plus获取serialNumber返回"unknown"的解决办法
你添加的READ_PRIVILEGED_PHONE_STATE是Android的特权权限,普通应用根本拿不到授权——哪怕在清单里声明并忽略警告也没用,这个权限只开放给系统应用或经过厂商签名认证的应用,所以你的代码自然拿不到有效serialNumber。
从Android 10(API 29)开始,谷歌就严格限制了设备序列号的获取,普通应用无论申请什么权限都无法拿到真实的serialNumber,只会返回"unknown"。
可行替代方案
- 改用AndroidId作为设备唯一标识,这是普通应用能获取的合法标识,恢复出厂设置后会变化,但能满足大部分场景需求:
final deviceInfoPlugin = DeviceInfoPlugin(); final androidInfo = await deviceInfoPlugin.androidInfo; final androidId = androidInfo.androidId; - 如果业务必须要serialNumber,只有两种可能:
- 把应用做成系统应用,刷入设备的系统分区,仅适用于定制ROM开发场景。
- 和设备厂商合作,获取厂商签名授权,让应用获得特权权限,普通开发者基本无法实现。
内容的提问来源于stack exchange,提问作者TheMortiestMorty
相关产品推荐
相关产品推荐

