如何获取一个能唯一标识每台Android设备的序号?
这个问题有很多答案,但是他们中的大部分只在某些情况下有效。
根据测试:
所有的设备都可以返回一个 TelephonyManager.getDeviceId()
所有的GSM设备 (测试设备都装载有SIM卡) 可以返回一个TelephonyManager.getSimSerialNumber()
所有的CDMA 设备对于 getSimSerialNumber() 却返回一个空值!
所有添加有谷歌账户的设备可以返回一个 ANDROID_ID
所有的CDMA设备对于 ANDROID_ID 和 TelephonyManager.getDeviceId() 返回相同的值(只要在设置时添加了谷歌账户)
目前尚未测试的:没有SIM卡的GSM设备、没有添加谷歌账户的GSM设备、处于飞行模式的设备。
所以如果你想得到设备的唯一序号, TelephonyManager.getDeviceId() 就足够了。但很明显暴露了DeviceID会使一些用户不满,所以最好把这些id加密了。实际上加密后的序号仍然可以唯一的识别该设备,并且不会明显的暴露用户的特定设备,例如,使用 String.hashCode() ,结合UUID:
1
final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
2
3
final String tmDevice, tmSerial, tmPhone, androidId;
4
tmDevice = "" + tm.getDeviceId();
5
tmSerial = "" + tm.getSimSerialNumber();
6
androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
7
8
UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
9
String uniqueId = deviceUuid.toString();
最后的deviceID可能是这样的结果: 00000000-54b3-e7c7-0000-000046bffd97
分享到:
相关推荐
在Android系统中,开发者经常需要获取设备的唯一标识码来实现一些特定的功能,例如用户跟踪、数据同步或者设备注册等。然而,随着Android系统的更新,为了保护用户隐私,获取设备唯一标识的方式也在不断变化。本篇...
在iOS开发中,获取设备的唯一标识符UUID是常见的需求,用于区分不同的设备或存储特定设备的信息。UUID是一个全局唯一的、不可变的标识符,它由128位的数字组成,通常用32个16进制数字表示。本文将深入探讨如何在iOS...
Uinty获取手机端设备唯一id(设备号) 使用说明 1,GetAndroidphoneId.java 这个文件放到Plugins/Android/下 2,AndroidInterface.cs是调用Java的(与java交互) 3,新建脚本->调用 AndroidInterface.GetInstance....
在早期,IMEI(国际移动设备识别码)是广泛使用的设备唯一标识,但随着隐私保护政策的加强,IMEI的获取和使用受到了限制。在这种背景下,使用UUID作为IMEI的替代方案变得越来越常见。本文将深入探讨如何在Android中...
Unity生成设备唯一UUID,代码+样例
本资料"获取Android移动终端设备唯一ID.zip"聚焦于这一主题,旨在帮助开发者了解如何在Android平台上获取设备的唯一识别码。 在Android系统中,有几种方式可以获取到设备的唯一标识: 1. **IMEI(国际移动设备识别...
2. Android:Android系统提供了多种获取设备唯一标识的方法。IMEI(International Mobile Equipment Identity)是手机硬件的唯一标识,而ANDROID_ID则是设备软件层面的一个16进制字符串。由于隐私问题,Android也...
在Android系统中,为了满足各种应用场景,如用户追踪、设备注册、数据分析等,开发者常常需要获取设备的唯一标识符。本文将详细介绍几种在Android中获取唯一ID的方法。 1. **IMEI (国际移动设备识别码)** IMEI是...
1. **IMEI(国际移动设备识别码)** IMEI是移动设备的全球唯一标识,通常用于区分手机。在Android中,可以通过`TelephonyManager`类的`getDeviceId()`方法获取。然而,由于隐私原因,从Android 6.0(API级别23)...
本文将深入探讨如何在Android和iOS平台上获取类似于"serial"(序列号)和"EMEI"(国际移动设备识别码)的设备唯一标识。 首先,让我们来看看Android系统。在Android中,获取设备的序列号可以通过`Build.SERIAL`属性...
java 提供通用唯一识别码(universally unique identifier)(UUID)实现 java 提供通用唯一识别码(universally unique identifier)(UUID)实现 java 提供通用唯一识别码(universally unique identifier)(UUID...
本教程将深入探讨如何在Android设备之间利用UUID进行蓝牙通信。 首先,我们要了解Android中的蓝牙API。Android提供了`BluetoothAdapter`,`BluetoothDevice`,`BluetoothServerSocket`和`BluetoothSocket`等类来...
虽然NDK提供了获取UUID的方法,但Android系统本身也提供了一些API来获取设备的唯一标识。以下是一些常见的方法: 1. **IMEI/MEID**:对于有物理SIM卡的设备,IMEI(International Mobile Equipment Identity)是...
通用唯一识别码(Universally Unique Identifier,UUID)是一种在分布式计算环境中用来标识信息的编码方式。UUID 是由128位数字组成的标识符,通常用16进制表示,长度为32个字符。它的设计使得在全球范围内,任何...
imei是设备的一个编号值,获取比较方便,不过有些设备的设备编号获取不到,...UUID生成的原理,先获取设备的标识信息,如果能够获取到就使用该获取到的值,否则就生成一个随机数,然后通过缓存和文件的方式保存这个值。
在Android应用程序中,我们经常需要获取设备的唯一标识,以便于识别和跟踪设备信息。例如,在用户注册过程中,我们需要获取设备的唯一标识,以便于将用户与设备绑定。在数据统计中,我们需要获取设备的唯一标识,以...
在Delphi 10.3开发环境中,获取电脑唯一码是一项常见的需求,特别是在软件授权、设备绑定或数据个性化等场景下。本主题将详细介绍如何在Windows操作系统(包括Win 10和2003系统)上,利用Delphi 10.3编写代码来获取...
通过WMI查询,我们可以获取到诸如BIOS信息、硬件设备信息等,这些信息通常包含有唯一标识符。例如,可以使用以下WMI查询来获取计算机的UUID(Universally Unique Identifier): ```python import wmi c = wmi.WMI...
第一种方式是获取IMEI,但是有的手机如果不是正品的话,就获取不到所以通过这一种方式还是会出现有的设备是没有唯一标识的 第二种方式获取手机卡的序列号,当然这种也不是唯一的,因为有的手机是双卡双待的所以可能...