android開發 獲取裝置唯一ID及當前系統時間的工具類
阿新 • • 發佈:2021-01-24
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 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:"+IpUtils.getUUID();
System.out.println(uuid);
//獲取到的裝置ID結果:00000000-7612-3b92-0000-000012e8d9a8
String time ="當前時間:"+ IpUtils.getTime();
System.out.println(time);
//獲取到的當前時間結果:2021-01-23 13:32:23
雖然由於唯一識別符號許可權的更改會導致android.os.Build.getSerial()返回unknown,但是由於m_szDevIDShort是由硬體資訊拼出來的,所以仍然保證了UUID的唯一性和永續性。
經測試上述方法完全相同的手機有可能重複,網上還有其他方案比如androidID,但是androidID可能由於機型原因返回null,所以個人任務兩種方法半斤八兩。裝置ID的獲取一個版本比一個版本艱難,如果有好的方法歡迎指出。
minSDK警告
在 Android Q 中,當用戶首次執行以 Android 6.0(API 級別 23)以下的版本為目標平臺的任何應用時,Android平臺會向用戶發出警告。
如果此應用要求使用者授予許可權,則系統會先向使用者提供調整應用許可權的機會,然後才會允許此應用首次執行。
谷歌要求執行在Q裝置上的應用targetSDK>=23,不然會向用戶發出警告。