如何在Xamarin Android中获取设备唯一ID以实现陌生设备登录告警?
在Xamarin Android中获取唯一设备ID实现陌生设备登录告警
可以获取适合该场景的设备标识,不过要选对稳定且权限要求低的类型,以下是具体方案和建议:
推荐使用的设备标识:Android ID
Android ID是系统在设备首次启动时生成的64位字符串,除非恢复出厂设置或刷机,否则不会变更,而且无需申请敏感权限,兼容性覆盖绝大多数Android设备,非常适合你的场景。
获取Android ID的代码示例:
using Android.Provider; public string GetUniqueDeviceId() { var appContext = Android.App.Application.Context; return Settings.Secure.GetString(appContext.ContentResolver, Settings.Secure.AndroidId); }
其他可选标识(不推荐优先使用)
- 设备序列号(Build.Serial):Android 8.0及以后需要
READ_PHONE_STATE权限,部分OEM设备可能未设置序列号,会返回"unknown",稳定性不如Android ID。 - IMEI/MEID:仅适用于带蜂窝模块的设备(平板等无SIM卡设备无法获取),Android 10及以后非系统应用已禁止获取,且需要敏感权限,不推荐用于你的场景。
业务实现建议
- 绑定设备与账户:用户首次登录时,将获取到的Android ID(建议哈希后存储)与用户账户关联,保存到后端数据库的"已知设备列表"中。
- 登录校验逻辑:后续用户登录时,获取当前设备的Android ID,与后端该账户的已知设备列表对比:
- 若存在:正常登录;
- 若不存在:触发邮件告警,同时可让用户选择是否将该设备加入已知列表。
- 辅助信息补充:告警邮件中可附带设备的基础信息,帮助用户快速识别设备,获取代码:
- 设备型号:
Android.OS.Build.Model - 系统版本:
Android.OS.Build.VERSION.Release
- 设备型号:
- 特殊情况处理:告知用户,若设备恢复出厂设置或刷机,Android ID会变更,此时登录会被识别为新设备,需用户手动确认。
内容的提问来源于stack exchange,提问作者KLeo
相关产品推荐
相关产品推荐

