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

写代码的四点:
     1.明确需求。要做什么?
     2.分析思路。要怎么做?(1,2,3……)
     3.确定步骤。每一个思路要用到哪些语句、方法和对象。
     4.代码实现。用具体的语言代码将思路实现出来。
 
学习新技术的四点:
     1.该技术是什么?
     2.该技术有什么特点?(使用需注意的方面)
     3.该技术怎么使用?(写Demo)
     4.该技术什么时候用?(在Project中的使用场景 )
 

----------------------早计划,早准备,早完成。-------------------------

代码如下:

package com.gzqol.xjxh.xjmendianguanli.util;

import android.content.Context;
import android.content.SharedPreferences;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;

import java.util.UUID;

import static android.content.Context.MODE_PRIVATE;
import static android.text.TextUtils.isEmpty;

/**
 * 获取设备ID
 * deviceID的组成为:渠道标志+识别符来源标志+hash后的终端识别符
 */
public class DeviceIDUtil {

    /**
     * 渠道标志为:
     * 1,andriod(a)
     * 

* 识别符来源标志: * 1, wifi mac地址(wifi); * 2, IMEI(imei); * 3, 序列号(sn); * 4, id:随机码。若前面的都取不到时,则随机生成一个随机码,需要缓存。 * * @param context * @return */ public static String getDeviceId(Context context) { StringBuilder deviceId = new StringBuilder(); // 渠道标志 deviceId.append("a"); try { //wifi mac地址 WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); String wifiMac = info.getMacAddress(); if (!isEmpty(wifiMac)) { deviceId.append("wifi"); deviceId.append(wifiMac); LogUtil.e("getDeviceId : ", deviceId.toString()); return MD5Util.md5Encrypt32Upper(deviceId.toString()); } //IMEI(imei) TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); String imei = tm.getDeviceId(); if (!isEmpty(imei)) { deviceId.append("imei"); deviceId.append(imei); LogUtil.e("getDeviceId : ", deviceId.toString()); return MD5Util.md5Encrypt32Upper(deviceId.toString()); } //序列号(sn) String sn = tm.getSimSerialNumber(); if (!isEmpty(sn)) { deviceId.append("sn"); deviceId.append(sn); LogUtil.e("getDeviceId : ", deviceId.toString()); return MD5Util.md5Encrypt32Upper(deviceId.toString()); } //如果上面都没有, 则生成一个id:随机码 String uuid = getUUID(context); if (!isEmpty(uuid)) { deviceId.append("id"); deviceId.append(uuid); LogUtil.e("getDeviceId : ", deviceId.toString()); return MD5Util.md5Encrypt32Upper(deviceId.toString()); } } catch (Exception e) { e.printStackTrace(); deviceId.append("id").append(getUUID(context)); } // LogUtil.e("getDeviceId : ", deviceId.toString()); return MD5Util.md5Encrypt32Upper(deviceId.toString()); } /** * 得到全局唯一UUID */ public static String getUUID(Context context) { SharedPreferences mShare = context.getSharedPreferences("uuid", MODE_PRIVATE); String uuid = null; if (mShare != null) { uuid = mShare.getString("uuid", ""); } if (TextUtils.isEmpty(uuid)) { uuid = UUID.randomUUID().toString(); mShare.edit().putString("uuid", uuid).commit(); } return uuid; } }

在项目中的应用:

String deviceId = DeviceIDUtil.getDeviceId(getApplicationContext());
LogUtil.e("DeviceID", deviceId);

---------------------------------------------------------------------------------------------------------------------------

早计划,早准备,早完成。 欢迎关注!交流!Star!

GitHub:https://github.com/wangyang0313

微信公众号:一个灵活的胖子MrWang

简书:https://www.jianshu.com/u/e5e733d79b96  

 

你可能感兴趣的:(Android工具篇,Android常用工具类,一个灵活的胖子的进击之路)