android獲取裝置唯一碼,最唯一的應該是imei號,全網唯一,但是有時候不一定可以獲取到,這時候可以通過獲取其他id來代替,
獲取cpu串碼,裝置序列號、androidid,pesudouniqueid(),mac位址,藍芽mac位址,這幾個id裡面獲取只要獲取到乙個位址就可以使用,如果最後實在是上面的id都沒有獲取到,那只能生產乙個uuid,該id表示同一時空下全世界唯一id。
public class deviceidutils
onlyid = getsnid();
//獲取裝置序列號不為空,直接返回
if (!timeutils.isempty(onlyid))
onlyid = getimei(context);
//獲取imei號不為空,直接返回
if (!timeutils.isempty(onlyid))
onlyid = getandroidid(context);
//獲取androidid號不為空,直接返回
if (!timeutils.isempty(onlyid))
onlyid = getpesudouniqueid();
//獲取unique號不為空,直接返回
if (!timeutils.isempty(onlyid))
// onlyid = getwlanmacaddress(context);
//獲取網路mac不為空,直接返回
// if (!timeutils.isempty(onlyid))
// onlyid = getbtmacaddress();
// //獲取藍芽mac號不為空,直接返回
// if (!timeutils.isempty(onlyid))
//生成uuid
onlyid = getuuid();
return onlyid;
}/**
* 得到全域性唯一uuid
*/public static string getuuid()
/*** the imei: 僅僅只對android手機有效
* 採用此種方法,需要在androidmanifest.xml中加入乙個許可:android.permission.read_phone_state,並且用
* 戶應當允許安裝此應用。作為手機來講,imei是唯一的,它應該類似於 359881030314356(除非你有乙個沒有量產的手
* 機(水貨)它可能有無效的imei,如:0000000000000)。
** @return imei
*/public static string getimei(context context) catch (exception e)
log.d(tag, "getimei: imei " + imei);
return imei;
}//獲取裝置序列號
public static string getsnid() catch (exception ignored)
return str;
}/**
* 獲取cpu串碼
** @return
*/public static string getcpuname()
} else
}} catch (ioexception ex)
return cpuaddress;
}/**
* the android id
* 通常被認為不可信,因為它有時為null。開發文件中說明了:這個id會改變如果進行了出廠設定。並且,如果某個
* andorid手機被root過的話,這個id也可以被任意改變。無需任何許可。
** @return androidid
*/public static string getandroidid(context context) catch (exception e)
log.d(tag, "getandroidid: " + str);
return str;
}public static string getserialnum() catch (exception e)
log.d(tag, "getserialnum: " + serialnumber);
return serialnumber;
}/**
* pseudo-unique id, 這個在任何android手機中都有效
* 有一些特殊的情況,一些如平板電腦的設定沒有通話功能,或者你不願加入read_phone_state許可。而你仍然想獲得唯
* 一串行號之類的東西。這時你可以通過取出rom版本、製造商、cpu型號、以及其他硬體資訊來實現這一點。這樣計算出
* 來的id不是唯一的(因為如果兩個手機應用了同樣的硬體以及rom 映象)。但應當明白的是,出現類似情況的可能性基
* 本可以忽略。大多數的build成員都是字串形式的,我們只取他們的長度資訊。我們取到13個數字,並在前面加上「35
* 」。這樣這個id看起來就和15位imei一樣了。
** @return pesudouniqueid
*/public static string getpesudouniqueid()
/*** the wlan mac address string
* 是另乙個唯一id。但是你需要為你的工程加入android.permission.access_wifi_state 許可權,否則這個位址會為
* null。returns: 00:11:22:33:44:55 (這不是乙個真實的位址。而且這個位址能輕易地被偽造。).wlan不必開啟,
* 就可讀取些值。
** @return m_szwlanmac
*/public static string getwlanmacaddress(context context)
/*** 獲取藍芽mac位址
* 只在有藍芽的裝置上執行。並且要加入android.permission.bluetooth 許可權.returns: 43:25:78:50:93:38 .
* 藍芽沒有必要開啟,也能讀取。
** @return m_szbtmac
*/public static string getbtmacaddress()
}
獲取裝置唯一碼
有些企業內部程式需要對訪問程式的真機做白名單限制,對於裝置唯一碼,蘋果做出了如下限制 1.從ios7之後,獲取mac位址會返回固定值 02 00 00 00 00 00 2.試圖獲取udid 裝置唯一碼 的程式不會通過蘋果的審核。我們可以在程式第一次啟動時生成這個id並儲存起來,但是,如果使用者刪除...
生成唯一碼
根據年月日 隨機數獲取19位的資料序列 public static long getrandomid 根據年月日 隨機數獲取19位的資料序列 public static long gethashcodeid var num 19 s.length var f datetime.now.tostrin...
android 獲取裝置唯一標識碼
按照正常的獲取在android 8.0 之前都是可以拿到我們的imei碼的,就是廣為流傳的那些形式,我就不一 一贅述了,到了android 9.0 之後就出現了部分手機廠商的機型獲取不到我們的imei碼,例如 一加 等廠商,而且其他廠商的在獲取的時候也需要獲取我們的 read phone state...