Android能够获取到唯一的设备ID吗?
Android是否有唯一的设备ID,如果有的话,该怎样快速有效获取?
Settings.Secure#ANDROID_ID 返回Android ID ,是一个64位的16进制字符串
1
2
3
|
import android.provider.Settings.Secure;
private String android_id = Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID);
|
关于这个问题有很多的答案,不过其中大部分将只能算是答对了一部分,还不够好。
根据我在很多设备上的测试(所有的电话,至少有一个是无效的)
- 所有设备针对 TelephonyManager.getDeviceId() 测试都有返回值
- 所有GSM设备(都有SIM卡)针对 TelephonyManager.getSimSerialNumber() 测试都有返回值
- 所有CDMA设备针对 getSimSerialNumber() 测试返回 NULL(预期中的)
- 所有有谷歌帐户的设备都返回了 ANDROID_ID 值
- 所有的CDMA设备针对 ANDROID_ID 和 TelephonyManager.getDeviceId() 都返回相同的值(或派生自同一个值) - 前提是安装过程中已经添加了谷歌帐户。
- 我还没有机会测试没有SIM卡的GSM设备,没有谷歌账户的GSM设备,以及任何在飞行模式下的设备。
所以,如果你想要得到设备本身的唯一值, TM.getDeviceId()应该是足够了。不过显然的,有些用户比其他人更加偏执一些,可以将这些标识中的一个或者多个进行hash运算就很有用,生成的字符串仍然可以唯一标识该设备,但是不会明确的标识实际的设备。例如,使用String.hashCode(),再加上一个UUID:
1
2
3
4
5
6
7
8
9
|
final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
final String tmDevice, tmSerial, androidId;
tmDevice = "" + tm.getDeviceId();
tmSerial = "" + tm.getSimSerialNumber();
androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
UUID deviceUuid = new UUID(androidId.hashCode(), (( long )tmDevice.hashCode() << 32 ) | tmSerial.hashCode());
String deviceId = deviceUuid.toString();
|
结果可能类似 :00000000-54b3-e7c7-0000-000046bffd97
对我来说这种方式已经足够了
别忘了增加权限,用于读取 TelephonyManager properties,在manifest 中增加下面一行:
1
|
< uses-permission android:name = "android.permission.READ_PHONE_STATE" />
|
Android能够获取到唯一的设备ID吗?相关推荐
- android代码获取deviceid,获取安卓系统的设备id用getDeviceId()函数
来源:网络 | 2012-12-18 | (有12829人读过) 贴段具体例子代码,用来说明,安卓系统下,如何获取设备id的一段小例子供大家参考: 在计算机上,我们习惯用MAC地址来标志一台计算机.在 ...
- Android系统信息获取 之八:WIFI设备和WIFI信号信息获取
通过分析WifiManager.Java,WifiINfo.java源码,我们可以发现WIFI设备信息和WIFI状态的定义. 1.Wifi设备信息中常用的信息有 [java] view pla ...
- 怎样获取iPhone/ipad的设备ID(UUID)号?
iOS程序发布测试之获取Tester设备UDID是本文要介绍的内容,主要介绍了测试过程中获取Tester设备UDID的内容,先来看详细内容. AD: iOS程序发布测试之获取Tester设备UDID是 ...
- 是否有唯一的Android设备ID?
Android设备是否具有唯一的ID,如果是,则使用Java访问它的简单方法是什么? #1楼 有许多不同的方法可以解决这些ANDROID_ID问题(有时可能为null或特定模型的设备总是返回相同的ID ...
- 漫谈唯一设备ID,android开发工程师
设备ID,简单来说就是一串符号(或者数字),映射现实中硬件设备. 如果这些符号和设备是一一对应的,可称之为"唯一设备ID(Unique Device Identifier)" 不幸 ...
- Android中获取唯一的id
文章目录 Android唯一设备ID现状 IMEI MAC地址 唯一Id实现方案 那些硬件适合硬件标识 工具类 Android唯一设备ID现状 设备ID,简单来说就是一串符号(或者数字),映射现实中硬 ...
- Android - 获取移动端设备ID标识,分情况
目前需求:未登录的用户(游客)需要与客服实时通讯,要怎么区分用户消息? 思路:获取游客的设备ID,以此为标识传给服务器来查询/发送信息,一设备为一用户. 那设备ID是什么?怎么获取呢? 设备ID,就是 ...
- 简述Android手机常用的设备ID
一.简介 1.设备ID: 简单来说就是一串符号(或者数字)类似于我们的身份证号,映射现实中硬件设备.排除特殊情况(模拟器等),设备ID和设备是一一对应的,我们称之为"唯一设备ID(Uniqu ...
- android 获取imei(国际移动设备身份码)号码详解及其应用场景
IMEI简介: IMEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号&qu ...
最新文章
- python中怎么安装pip-python中怎么安装pip
- ThinkPHP3.1快速入门(3)查询语言
- mysql5.5 mysqli_php5.5.38增加mysqli扩展
- BZOJ 2466 中山市选2009 树 高斯消元+暴力
- 飞利浦医疗收购Direct Radiology,加强远程放射学服务能力
- HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )
- [cogs] 传染病控制
- Git提交代码的流程
- 极客书的编程教程合集
- linux源码解析-dup_task_struct函数
- IJCAI 2022杰出论文公布,大陆作者中稿298篇拿下两项第一
- Stanford Algorithms: Design and Analysis, Part 1 [Final Exam]
- because of, due to, owing to, on account of,as a result of和thanks to的用法比较
- 平衡二叉树(注意LR和RL)
- 全系列计算机等级考试题库软件+Office2016
- RISC-V Linux 启动流程分析
- 华为云如何绑定/解绑二次验证码/虚拟MFA/谷歌身份验证器?
- Ladydug5球形全景影像(获取、拼接)
- EOS将发布的官方EVM怎么样?
- v-show使用三元运算符
热门文章
- 大话手游苹果系统多少个服务器,《大话西游》手游iOS系统官服开服公告!
- 【人脸识别】HOG特征提取人脸识别【含Matlab源码 641期】
- 如何在ubuntu中设置webcam
- 数据可视化之Seaborn绘图
- python repair修复功能_NI 技术支持|我的插件显示需要修复(REPAIR)了该怎么办?...
- java语言程序设计丁振凡ppt_Java语言程序设计(第2版)丁振凡第2章.ppt
- 自然语言处理系列二十二》词性标注》词性标注原理》词性介绍
- Javaweb零基础学习(壹)
- 新西兰公司注册流程概括
- 小程序微信小程序设计注册页面