Android获取设备ID号

Android有多种方式可以获取设备ID,但是每一种总会有一点限制,为此,整合几种方式在一起,这样就万无一失了

public class DeviceIdFactory {

protected static final String PREFS_FILE = "device_id.xml";
protected static final String PREFS_DEVICE_ID = "device_id";
protected static volatile UUID uuid;
private static volatile DeviceIdFactory mInstance;private DeviceIdFactory(Context context) {if (uuid == null) {synchronized (DeviceIdFactory.class) {if (uuid == null) {final SharedPreferences prefs = context.getSharedPreferences(PREFS_FILE, 0);final String id = prefs.getString(PREFS_DEVICE_ID, null);if (id != null) {// Use the ids previously computed and stored in the// prefs fileuuid = UUID.fromString(id);} else {final String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);try {if (!"9774d56d682e549c".equals(androidId)) {uuid = UUID.nameUUIDFromBytes(androidId.getBytes("utf8"));} else {if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {String serial = null;try {serial = Build.class.getField("SERIAL").get(null).toString();} catch (IllegalAccessException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();}String m_szDevIDShort = "35" + (Build.BOARD.length() % 10) + (Build.BRAND.length() % 10) + (Build.CPU_ABI.length() % 10) + (Build.DEVICE.length() % 10) + (Build.MANUFACTURER.length() % 10) + (Build.MODEL.length() % 10) + (Build.PRODUCT.length() % 10);uuid = new UUID(m_szDevIDShort.hashCode(), serial.hashCode());} else {final String deviceId = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();uuid = deviceId != null ? UUID.nameUUIDFromBytes(deviceId.getBytes("utf8")) : UUID.randomUUID();}}} catch (UnsupportedEncodingException e) {throw new RuntimeException(e);}// Write the value out to the prefs fileprefs.edit().putString(PREFS_DEVICE_ID, uuid.toString()).commit();}}}}
}public static DeviceIdFactory getInstance(Context context) {if (mInstance == null) {synchronized (DeviceIdFactory.class) {if (mInstance == null) {mInstance = new DeviceIdFactory(context);}}}return mInstance;
}public String  getDeviceUuid() {TLog.v("DeviceId","getDeviceUuid "+uuid.toString());return uuid.toString();
}

}

Android获取设备ID号相关推荐

  1. Android 获取设备ID,手机厂商,运营商,联网方式,获取系统语言,获取时区

    权限 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 安卓6.0需动态获取 ...

  2. android 获取设备id 崩溃,获取Android设备ID时出错

    我正在尝试在我的Android应用中检索我的adroid设备的设备ID.但是,在我的程序中添加以下行后,错误存在并且程序无法启动: String ts = Context.TELEPHONY_SERV ...

  3. android 获取设备串号,Android获取设备IMEI和Mac地址

    释放双眼,带上耳机,听听看~! public static boolean checkPermission(Context context, String permission) { boolean ...

  4. Android 获取设备号

    前言 最近在对接口的时候 根据后台要求生成设备唯一id 作为key android 获取设备号比较简单 这里记录一下 实现 /*** 获取设备号* @param context* @return*/p ...

  5. Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

    Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...

  6. android设备id完美解决方法,安卓获取渠道名渠道id Android获取设备唯一标识的终极解决方法,防止安卓7.0时崩溃问题...

    一,先说获取渠道名(这里以友盟为例) /* * 4.5.1新加渠道名字段,用来传给后台去统计各个渠道下载量 * */ public static String getSource() { //获取渠道 ...

  7. android 使用kotlin 获取设备id

    在 Android 中,获取设备的唯一标识符是一项常见的任务.以下是使用 Kotlin 语言获取设备 ID 的步骤: 1. 在 AndroidManifest.xml 文件中添加以下权限: <u ...

  8. 工具篇——DeviceIDUtil(获取设备ID)

    写代码的四点: 1.明确需求.要做什么? 2.分析思路.要怎么做?(1,2,3--) 3.确定步骤.每一个思路要用到哪些语句.方法和对象. 4.代码实现.用具体的语言代码将思路实现出来. 学习新技术的 ...

  9. Android 获取设备各种信息以及其它

    做手机开发,想必都希望获取手机号码吧,android中有一个类android.telephony.TelephonyManager提供这个功能. TelephonyManager tm = (Tele ...

最新文章

  1. kux格式怎么转换成mp4?简单快速的视频转换技巧分享
  2. SwipeBackActivity 的使用
  3. python之路---03 整型 bool 字符串 for循环
  4. 神经网络简史:BP算法后的又一突破—信念网络
  5. Ubuntu开发之旅一---安装初步
  6. python-面向对向-实例方法的继承
  7. 拿4k的前端开发都会做些什么?
  8. bzoj 1047 理想的正方形
  9. java RandomAccessFile类(随机访问文件)
  10. 解决AxureRP经常性损坏问题
  11. 【杂谈】为了子孙后代,请不要逃离大城市或者龟缩在三四线小城市
  12. android圆形图片裁剪demo以及实现
  13. IntelliJ IDEA 在使用manven后的纠结(每次修改代码都要重启tomcat才能看效果吗?),请各位大侠来看看问题
  14. Two Graphs
  15. 计算机毕业设计Java医院管理系统(系统+源码+mysql数据库+Lw文档)
  16. 多重共线性是如何影响回归模型的
  17. JS中如何取某个指定字符(前)后的字符串
  18. php generator 风雪,PHP 生成器Generator理解
  19. 软件设计师笔记之信息安全知识
  20. 8.17vue项目搜素框的实现

热门文章

  1. GHGL项目-其他问题锦集
  2. PIC16F877A单片机 (中断与定时器Timer2)
  3. m_sequencer和p_sequencer
  4. 【微信小程序】云函数入门(保姆级别)
  5. phoenxi elixir 框架几个方便的命令
  6. ndims matlab,MATLAB的size(),length(),ndims()函数
  7. vue开发h5 公众号
  8. 广讯通系统地址和服务器,广讯通OA办公系统
  9. Vue+Vux实现登录
  10. python和c++情侣网名_python与C或者C++的混合编程