Kinggrid金格技术论坛-应用资料库

注册

 

发新话题 回复该主题

【已回复】iAppOffice授权App日志管理中硬件标示获取的方式 [复制链接]

1#
银光图片

问题描述:iAppOffice授权App日志管理中的硬件标示大部分是硬件序列号,为什么有某些设备显示的是MAC地址?


您所在的用户组无法下载或查看附件


您所在的用户组无法下载或查看附件

问题回复:iAppOffice授权App日志管理中的硬件标示是按照顺序逐次通过不同方法获取硬件的唯一标示。下面详细介绍几种常见的获取各种唯一的设备标识方式

1DEVICE_ID
概念:是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备。
优点:根据不同的手机设备返回IMEI国际移动设备识别码),MEID移动设备识别码)或者ESN码(CDMA电子序列号),唯一性良好。
缺点:由于获取该唯一值,需要android.peimision.READ_PHONE_STATE,如果设备没有通话功能就返回为null 。
关键代码:
  1. TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
  2. String imei = tm.getDeviceId();
复制代码

2WIFI MAC

概念:获取手机wifiMac地址作为唯一标识。

缺点:如果设备没有支持WIFI的硬件,就返回null。

关键代码:
  1. WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
  2.     WifiInfo info = wifi.getConnectionInfo().getMacAddress();
  3.     String wifiMac = info.getMacAddress();
复制代码

3BlueTooth MAC

概念:获取手机的蓝牙Mac地址作为唯一设备标识。

缺点:如果设备没有支持蓝牙的硬件,就返回null。

关键代码:
  1. BluetoothAdapter btAdapter = null; //本地蓝牙适配器
  2.     btAdapter = BluetoothAdapter.getDefaultAdapter();
  3.     String btMacAddress = btAdapter.getAddress();
复制代码

4SIM Serial Number

概念:SIM卡的序列号。

缺点:没有SIM卡就返回null;

    对于CDMA设备,返回null。

关键代码:

  1. TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
  2. String sn = tm.getSimSerialNumber();
复制代码

5、利用设备各个硬件拼接出一个ID

概念:设备内的每个硬件都有一个名称,利用名称的长度的个位数组合成一个设备标识ID。

优点:非手机设备也可以通过该接口获取ID。

缺点:统一型号的设备出现相同ID的可能性比较大。

关键代码:
  1.   String DevIDShort = "35" +             //头部加上"35",这样这个ID看起来就和15位IMEI一样了    
  2.     Build.BOARD.length() % 10 +
  3.     Build.BRAND.length() % 10 +
  4.     Build.CPU_ABI.length() % 10 +
  5.     Build.DEVICE.length() % 10 +
  6.     Build.DISPLAY.length() % 10 +
  7.     Build.HOST.length() % 10 +
  8.     Build.ID.length() % 10 +
  9.     Build.MANUFACTURER.length() % 10 +
  10.     Build.MODEL.length() % 10 +
  11.     Build.PRODUCT.length() % 10 +
  12.     Build.TAGS.length() % 10 +
  13.     Build.TYPE.length() % 10 +
  14.     Build.USER.length() % 10;
复制代码

6Android_ID

概念:当设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来。

缺点:由于厂商定制的Bug,不同的设备可能会产生相同的ANDROID_ID或返回值为null, Andorid手机被Root过的话,这个ID也可以被任意改变。

关键代码:

  1. String androidID = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
复制代码

7Serial Number

概念:Android系统2.3版本以上可以获取硬件SerialNumber。

优点:非手机设备也可以通过该接口获取ID。

关键代码:
  1. String sn = android.os.Build.SERIAL;
复制代码
补充:移动终端设备通过键入“*#06#”即可查得,不同厂商设备查询键入值有所不同,测试如下图:

您所在的用户组无法下载或查看附件
最后编辑李海燕 最后编辑于 2018-06-22 15:26:54
分享 转发
努力,是人生的态度!
TOP
发新话题 回复该主题