android开发 获取设备唯一ID、设备信息及当前系统时间的工具类

Android 获取设备唯一ID、设备信息及当前系统时间

import android.annotation.SuppressLint;
import android.os.Build;
import java.util.UUID;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DevicesId {
     /**
	 * 获取相同设备的唯一ID。
	 * @return
	 */
	@SuppressLint("MissingPermission")
	public static String getUUID() {
		String serial = null;
		String m_szDevIDShort = "35" +
				Build.BOARD.length() % 10 + Build.BRAND.length() % 10 +
				Build.CPU_ABI.length() % 10 + Build.DEVICE.length() % 10 +
				Build.DISPLAY.length() % 10 + Build.HOST.length() % 10 +
				Build.ID.length() % 10 + Build.MANUFACTURER.length() % 10 +
				Build.MODEL.length() % 10 + Build.PRODUCT.length() % 10 +
				Build.TAGS.length() % 10 + Build.TYPE.length() % 10 +
				Build.USER.length() % 10; //13 位
		try {
			if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
				serial = android.os.Build.getSerial();
			} else {
				serial = Build.SERIAL;
			}
            //API>=9 使用serial号
			return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
		} catch (Exception exception) {
            //serial需要一个初始化
			serial = "serial"; // 随便一个初始化
		}
        //使用硬件信息拼凑出来的15位号码
		return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
	}
	
	 /**
     * 获取手机信息
     * 手机厂商  品牌  型号  手机版本
     * @return
     */
    public static String devices_info() {
        String devices_info= Build.MANUFACTURER + " " + Build.BRAND + " " + Build.MODEL + " Android" + Build.VERSION.RELEASE;
        return devices_info;
    }
	
	 /**
     * 获取当前的时间
     * @return
     */
    public static String getTime() {
        Date date = new Date();// 创建一个时间对象,获取到当前的时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置时间显示格式
        String CurrentTime = sdf.format(date);
        return CurrentTime;
    }
}

任意位置获取调用方式

String uuid = "设备ID:"+Utils.getUUID();
System.out.println(uuid);
//获取到的设备ID结果:00000000-7612-3b92-0000-000012e8d9a8

String time ="当前时间:"+ Utils.getTime();
System.out.println(time);
//获取到的当前时间结果:2021-01-23 13:32:23

String time ="当前时间:"+ Utils.devices_info();
System.out.println(time);
//获取到的当前设备信息:HUAWEI HONOR YAL_AL00 Android10

虽然由于唯一标识符权限的更改会导致android.os.Build.getSerial()返回unknown,但是由于m_szDevIDShort是由硬件信息拼出来的,所以仍然保证了UUID的唯一性和持久性。
经测试上述方法完全相同的手机有可能重复,网上还有其他方案比如androidID,但是androidID可能由于机型原因返回null,所以个人任务两种方法半斤八两。设备ID的获取一个版本比一个版本艰难,如果有好的方法欢迎指出。
minSDK警告
在 Android Q 中,当用户首次运行以 Android 6.0(API 级别 23)以下的版本为目标平台的任何应用时,Android平台会向用户发出警告。
如果此应用要求用户授予权限,则系统会先向用户提供调整应用权限的机会,然后才会允许此应用首次运行。
谷歌要求运行在Q设备上的应用targetSDK>=23,不然会向用户发出警告。

参考出处:https://www.cnblogs.com/liyanyan665/p/11535831.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值