GitHub地址 Android中能作为唯一标识有四个,但付出一定的代价还是还是能改变,所以目前Android中没有绝对的唯一标识。
1、设备Id(IMEI) (需要授予权限) TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
return telephonyManager != null ? telephonyManager.getDeviceId() : null;


2、SIM卡有一个ID(用户可能会换手机卡) (IMSI SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。IMSI由MCC、MNC、MSIN组成 TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
return telephonyManager != null ? telephonyManager.getSubscriberId() : null;

从上面可以发现,无论是获取IMEI还是IMSI,都使用TelephonyManager这个类,通过getSystemService(Context.TELEPHONY_SERVICE)方法获取 TelephonyManager实列 getDeviceId获取IMEI,getSubscriberId获取IMSI
  
3、Wifi或蓝牙的MAC地址(缺陷:需要权限、且打开蓝牙和WIFI,6.0开始获取不到真实的值 并且Android6.0开始,为了给用户更多的数据保护,Android 移除了通过 WiFi 和蓝牙 API 来在应用程序中可编程的访问本地硬件标示符。现在 WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法都将返回 02:00:00:00:00:00

更多相关文章

  1. Android中蓝牙使用步骤小结
  2. 初涉Android蓝牙开发 收藏以备后用
  3. 蓝牙HID无线触摸屏
  4. 基于蓝牙socket开发Android蓝牙通信
  5. Android API开发之蓝牙开发之Android蓝牙开发GATT协议
  6. Android 蓝牙开发常用UUID表

随机推荐

  1. 让tabgroup在下方显示
  2. titanium更改默认图片
  3. Android(安卓)动画总结-帧动画
  4. Android studio 3.5.2真机调试_连接手机
  5. Android(安卓)Intent的几个主要用法--发
  6. Android Studio 学习 - 基本控件的使用;In
  7. Android(安卓)volley 使用OkHttp3.0
  8. 知识梳理:Android子线程中更新UI的3种方法
  9. android自定义Dialog实现底部弹窗
  10. 下载编译android kernel