
ID的全名是(虚拟身份电子识别),中文名称是通用帐户,通常称为网络. 它是一种Internet身份认证协议,具有唯一性和不可否认性. ID是标签的标识. 该ID在JS脚本中使用. 当JS想要修改标签的属性时如何查设备码,JS将使用id名称作为标签的唯一标识符. 也就是说,ID只是页面元素的标识,供其他元素脚本参考.

概述
有时必须识别用户设备,因此我希望获得一个稳定,可靠且唯一的识别码. 尽管在Android系统中提供了这样的设备标识代码,但是由于Android系统版本的限制以及制造商的自定义系统中的错误,稳定性和唯一性并不理想. 由于系统版本,手机硬件和其他限制,其他硬件信息的标识也存在不同程度的问题.
以下是用于设备识别的“有能力”或“有能力”字符串的集合.
DEVICE_ID
这是Android系统为开发人员提供的用于标识移动设备的序列号. 在各种方法中,它也是最通用的. 可以说几乎所有设备都可以返回该序列号,并且唯一性很好.
可以通过以下方法获取此DEVICE_ID:
TelephonyManager tm =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);字符串DEVICE_ID = tm.getDeviceId();
它将根据不同的移动设备返回IMEI,MEID或ESN代码,但是在使用过程中存在以下问题:
非移动设备: 最初,所有配备Android系统的移动设备,但现在有非移动设备: 例如平板电脑,电子书,电视,音乐播放器等. 这些设备没有调用的硬件功能,并且系统中没有TELEPHONY_SERVICE. 自然,无法通过上述方法获得DEVICE_ID.
权限问题: 需要READ_PHONE_STATE权限才能获取DEVICE_ID. 如果您仅使用DEVICE_ID,而不使用其他调用函数,则仅在一段时间后申请此权限. 一些用户会怀疑该软件的安全性.
制造商的自定义系统中的错误: 在某些移动设备上,由于此实现中的缺陷,将返回垃圾,例如: 零或星号
MAC地址
您可以使用手机的WiFi或蓝牙的MAC地址作为设备标识,但由于以下两个原因,我们不建议您使用此地址:
硬件限制: 并非所有设备都具有Wifi和Bluetooth硬件,如果该硬件不存在,则此信息自然不可用.
获取限制: 如果尚未打开Wifi,则无法获取其Mac地址;否则,不能获取其Mac地址. 蓝牙只有在打开时才能获取其Mac地址.
获取Wifi Mac地址:

获取蓝牙Mac地址:
Sim序列号
对于配备SIM卡的设备,可以通过以下方法获得Sim序列号:
TelephonyManager tm =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);字符串SimSerialNumber = tm.getSimSerialNumber();
注意: 对于CDMA设备,返回一个空值!
ANDROID_ID
首次启动设备时,系统将随机生成一个64位数字如何查设备码,并以十六进制字符串的形式保存该数字. 此十六进制字符串为ANDROID_ID. 擦拭设备时将重置该值. 可以通过以下方法获得:
导入android.provider.Settings;字符串ANDROID_ID = Settings.System.getString(getContentResolver(),Settings.System.ANDROID_ID);
ANDROID_ID可用作设备标识,但需要注意:
制造商自定义系统的错误: 不同的设备可能会生成相同的ANDROID_ID: 9774d56d682e549c.
制造商自定义系统的错误: 某些设备返回null.
设备差异: 对于CDMA设备,ANDROID_ID和TelephonyManager.getDeviceId()返回相同的值.
序列号
可以通过以下方法获取Android系统版本2.3以上的序列号,也可以通过此界面获取非移动设备.
String SerialNumber = android.os.Build.SERIAL;
安装ID
以上几种方法或多或少具有某些局限性或错误. 如果确实不需要绑定硬件本身,则使用自己生成的UUID也是一个不错的选择,因为此方法不需要访问设备. 资源也与设备类型无关.
此方法的原理是在安装后首次运行该程序时生成ID. 此方法不同于设备的唯一标识. 不同的应用程序将生成不同的ID,并且同一程序将以不同的方式重新安装. 因此,这不是设备的唯一ID,但可以保证每个用户的ID是不同的. 可以说是用于标识每个应用程序的唯一ID(即安装ID),并且可以用于跟踪已安装的应用程序的数量,等等.
Google Developer Blog提供了这样的框架:

设备唯一ID
从上面可以看到,没有一种方法可以可靠地获取Android系统中所有制造商设备的唯一ID. 每种方法都有其自身的范围和局限性. 这也是Android系统当前的流行版本,并且这些设备也来自不同的制造商,并且没有统一的标准.
从当前的开发角度来看,多个版本的Android系统将并存很长时间,并且某些设备制造商不会垄断Android系统. 从长远来看,Android基本系统将趋于稳定,设备徽标也将被标准化为系统的基本部分,然后有望完全解决该问题.
当前的解决方案更加可行,可以一一适应. 在确保大多数设备的便利性的前提下,如果不提供便利,则将其他替代信息用作标识符,即,另一个设备ID自身被封装. 内部算法保证与设备硬件信息和徽标的唯一性尽可能相关.
Android的最底层是Linux,我们仍然使用Linux的方法来获取:
1个CPU编号:
文件位于: / proc / cpuinfo
通过Adb shell查看:
adb shell cat / proc / cpuinfo
2个Mac地址
文件路径/ sys / class / net / wlan0 /地址
adb shell cat / sys / class / net / wlan0 /地址
xx: xx: xx: xx: xx: aa
这样,您可以获得两者的序列号,
确定方法,剩下的就是编写代码
以Mac地址为例:

在Android手机上获取物理唯一识别码
此唯一标识码在网络应用中非常有用,例如检测是否重复注册.
导入android.provider.Settings.Secure;
私有字符串android_id = Secure.getString(getContext(). getContentResolver(),Secure.ANDROID_ID);
我们将在项目过程中或多或少使用设备的唯一标识码. 我们希望获得稳定可靠的设备唯一识别码. 今天我们将介绍几种方法.
1. DEVICE_ID
假设我们确实需要使用真实设备的身份,则可能需要使用DEVICE_ID. 过去,我们的Android设备是手机. 可以通过TelephonyManager.getDeviceId()获得此DEVICE_ID. 它会根据不同的手机设备返回IMEI,MEID或ESN代码,但是在使用过程中会遇到很多问题: <
非移动设备: 如果仅具有Wifi或音乐播放器的设备不具有用于呼叫的硬件功能,则没有DEVICE_ID
权限: 要获得DEVICE_ID,需要READ_PHONE_STATE权限,但是如果我们仅使用它来获得它,并且不使用其他调用功能,那么此权限就太大了.
错误: 在一些移动设备上,此实现存在漏洞,并且会返回垃圾,例如: 零或星号的乘积
2. MAC地址
我们还可以通过手机的Wifi或蓝牙设备获取MAC地址作为DEVICE ID,但是不建议这样做,因为并非所有设备都具有Wifi,并且如果未打开Wifi,则硬件设备无法返回到MAC地址.
3. 序列号
在Android 2.3中,可以通过android.os.Build.SERIAL获得它,而非移动设备可以通过此界面获得.
4. ANDROID_ID
ANDROID_ID是首次启动设备时生成并存储的64位数字,并且在擦除设备时会重置该数字
ANDROID_ID似乎是获取设备ID的不错选择,但它也有缺陷:
在Android <= 2.1或Android> = 2.3版本中可靠且稳定,但在2.2版本中并非100%可靠 >
主流制造商生产的设备上经常发生错误,即每个设备都会生成相同的ANDROID_ID: 9774d56d682e549c
5. 安装ID: UUID
以上四种方法都有一定的局限性或存在或多或少的错误. 这里,还有另一种解决方法,即使用UUID,它不需要访问设备的资源,并且与设备类型无关.
此方法是通过在安装后首次运行程序后生成ID来实现的,但是此方法不同于设备的唯一标识. 由于应用程序(而不是设备)的不同,它将生成不同的ID. ID. 因此,它通常用于标识应用程序中的唯一ID(即,安装ID)或跟踪已安装的应用程序的数量. 幸运的是,Google Developer Blog提供了这样的框架:

摘要
总而言之,为了在设备上获得更通用的设备唯一标识,我们可以实现一个类,该类基于ANDROID_ID为每个设备生成唯一的UUID,并在获取失败时使用TelephonyManager. getDeviceId()是替代方法. 如果再次失败,则使用UUID生成策略.
重申一下,以下方法是生成设备ID. 在大多数情况下,安装ID可以满足我们的需求,但是如果您确实需要使用设备ID,则可以使用以下方法:



如何获取Android手机的唯一标识?
代码: 这是在Android中读取唯一的IMSI-ID / IMEI-ID的方法.
java:

注意: android.os.SystemProperties的标签标有@hide,因此在SDK中不存在. 如果需要使用它,则需要Android源代码支持.
上面介绍了一些出色的设备标识字符串代码. 它以代码的形式简要介绍了Google Developer Blog框架以及使用Linux获得唯一标识的方法. 上面已经提到了如何获得Android手机的唯一标识. 为了进行详细说明,在此不再详细介绍.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-193904-1.html
你Y的
美国