出售本站【域名】【外链】

首页 AI人工智能软件 qqAI人工智能 微信AI人工智能 抖音AI人工智能 快手AI人工智能 云控系统 手机AI人工智能

如何唯一的标识一台Android设备?

2022-11-24

如何惟一的标识一台Android方法?

记得好暂之前正在一场笔试上有一道题目问题便是:“如何惟一的标识一台Android方法?”。其时只晓得IMEI可以是用来标识一台手机的,所以就等闲填了上去,而后...就没有而后了...原日恰幸亏工做中从头逢到,就拿出来说说看。

首先说结论咱们到底能不能惟一的标识一台Android方法?很遗憾,暂时没有一个很完满的办法能够处置惩罚惩罚那个问题。Android开发者博客的本文是:

Suppose you feel that for the needs of your application, you need an actual hardware device identifier. This turns out to be a tricky problem.

既然那样,咱们就来谈谈这些不太完满的办法。正在那之前咱们须要先晓得几多个观念:

UUID : (Universally Unique Identifier)全局惟一标识符,是指正在一台呆板上生成的数字,它担保对正在同一时地面的所有呆板都是惟一的。由以下几多局部的组折:当前日期和光阳(UUID的第一个局部取光阳有关,假如你正在生成一个UUID之后,过几多秒又生成一个UUID,则第一个局部差异,别的雷同),时钟序列,全局惟一的IEEE呆板识又名(假如有网卡,从网卡与得,没有网卡以其余方式与得)。

IMEI : (International Mobile Equipment Identity) 是国际挪动方法身份码的缩写,国际挪动拆备辨识码,是由15位数字构成的"电子串号",它取每台手机逐个对应,而且该码是全世界惟一的。

MEID :( Mobile Equipment IDentifier )是寰球惟一的56bit CDMA制式挪动末端标识号。标识号会被烧入末端里,并且不能被批改。可用来对CDMA制式挪动式方法停行身份识别和跟踪。

两者的区别正在于:IMEI是手机的身份证,MEID是CDMA制式(电信经营的)的公用身份证;IMEI是15位,MEID是14位。

DEVICE_ID

依据差异的手机方法返回IMEI,MEID大概ESN码,可以依据以下代码与得:

Device_Id

非手机方法:最初步搭载Android系统都手机方法,而如今也显现了非手机方法:如平板电脑、电视、音乐播放器等。那些方法没有通话的硬件罪能,系统中也就没有TELEPHONY_SERVICE,作做也就无奈通过上面的办法与得DEVICE_ID。

权限问题:获与DEVICE_ID须要READ_PHONE_STATE权限,正在Android 6.0上运用运止时动态授予权限的机制,一旦用户不给以授权,将获与不到DEVICE_ID。 

厂商定制系统中的Bug:少数手机方法上,由于该真现有漏洞,会返回垃圾(那是开发者博客的本话,没有理论过)。

MAC ADDRESS

MAC_Address

可以运用手机WiFi或蓝牙的MAC地址做为方法标识,但是其真不引荐那么作,起果有以下两点:

硬件限制:其真不是所有的方法都有WiFi和蓝牙硬件,硬件不存正在作做也就得不到那一信息。

获与的限制:假如WiFi没有打开过,是无奈获与其Mac地址的;而蓝牙是只要正在打开的时候威力获与到其Mac地址。

Serial Number

硬件序列,正在Android 2.2 以上可以通过 与得序列号。正在一些没有电话罪能的方法会供给,某些手机上也可能供给(所以便是常常会返回Unknown)

ANDROID_ID

ANDROID_ID是方法第一次启动时孕育发作和存储的64bit的一个数,当方法被wipe后该数重置。

Android_Id

ANDROID_ID仿佛是获与Device ID的一个好选择,但它也出缺陷:正在收流厂商消费的方法上,有一个很常常的bug,便是每个方法都会孕育发作雷同的ANDROID_ID:9774d56d682e549c 。同时刷机,大概重置ANDROID_ID的值都会厘革。

接下来就来看看真际的标识办法:第一种:Installtion ID

正在步调拆置后第一次运止时生成一个ID,该方式和方法惟一标识纷比方样,差异的使用步调会孕育发作差异的ID,同一个步调从头拆置也会差异。所以那不是方法的惟一ID,但是可以担保每个用户的ID是差异的。 可以说是用来标识每一份使用步调的惟一ID(即Installtion ID),可以用来跟踪使用的拆置数质等(其真便是UUID)。

Installtion Id 获与办法

第二种:UniquePsuedoID

通过读与方法的ROM版原号、厂商名、CPU型号和其余硬件信息来组折出一串15位的号码和方法硬件序列号做为种子生成UUID。一串15位的号码(批质消费的方法每项信息根柢雷同,所以那一段雷同的可能性出格高);硬件序列,正在一些没有电话罪能的方法会供给,某些手机上也可能供给(Devices without telephony are required to report a unique device ID here; some phones may do so also.),所以便是常常会返回Unknown。

UniquePsuedoID  获与办法

第三种:Universal ID

首先通过读与Android_id,做为UUID的种子。若获得Android_Id就是9774d56d682e549c大概 发作舛错则random一个UUID做为备用方案,最后把获得的UUID同时存入内部存储和外部存储。下次运用UUID的时候劣先从外部存储读与,再从背部存储读与,最后正在重重生成,尽可能的担保其稳定性。

Universal_id获与办法

参考文档:

文中代码下载链接:

热门文章

推荐文章

友情链接: 永康物流网 本站外链出售 义乌物流网 本网站域名出售 手机靓号-号码网