Android獲取設(shè)備唯一標(biāo)識

獲取Android唯一標(biāo)識

開發(fā)中,進(jìn)程遇到需要獲取設(shè)備唯一標(biāo)識問題,有幾種方法可以作為參考

  • 使用IMEI

但是僅僅對Android手機(jī)有效惰聂,并且添加權(quán)限:android.permission.READ_PHONE_STATE

public synchronized static String getid(Context context) {
      TelephonyManager TelephonyMgr =   (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
      String ID= TelephonyMgr.getDeviceId();
      return ID;
 }```



- ######WLAN MAC Address 使用網(wǎng)卡地址
基本上的Android設(shè)備都配備WLAN帖鸦,可以通過WLAN地址來作為設(shè)備碼,同理劫拢,也需要加入android.permission.ACCESS_WIFI_STATE 權(quán)限肉津,否則返回null.

public synchronized static String getMacid(Context context) {
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String WLANMAC = wm.getConnectionInfo().getMacAddress();
return WLANMAC ;
} ```

  • 使用藍(lán)牙地址作為標(biāo)識

在有藍(lán)牙的設(shè)備上運(yùn)行。并且要加入android.permission.BLUETOOTH 權(quán)限.

 public synchronized static String getMacid(Context context) {
       BluetoothAdapter mBlueth= BluetoothAdapter.getDefaultAdapter(); 
       String mBluethId= mBlueth.getAddress();
       return mBluethId;
   } ```




- ######**Installtion ID**
考慮到Android設(shè)備的多樣性舱沧,比如一些平板沒有通話功能妹沙,或者部分低價設(shè)備沒有WLAN或者藍(lán)牙,甚至用戶不愿意賦予APP這些需要的權(quán)限熟吏,我們就使用無需權(quán)限的方法;
這種方式的原理是在程序安裝后第一次運(yùn)行時生成一個ID距糖,該方式和設(shè)備唯一標(biāo)識不一樣玄窝,不同的應(yīng)用程序會產(chǎn)生不同的ID,同一個程序重新安裝也會不同悍引。所以這不是設(shè)備的唯一ID恩脂,但是可以保證每個用戶的ID是不同的∪そ铮可以說是用來標(biāo)識每一份應(yīng)用程序的唯一ID(即Installtion ID)俩块,可以用來跟蹤應(yīng)用的安裝數(shù)量等。
```/**
 * Created by @dazhao on 2016/8/3 10:51.
 */
public class GetDeviceid {

    private static String sID = null;
    private static final String INSTALLATION = "INSTALLATION";

    public synchronized static String id(Context context) {
        if (sID == null) {
            File installation = new File(context.getFilesDir(), INSTALLATION);
            try {
                if (!installation.exists())
                    writeInstallationFile(installation);
                sID = readInstallationFile(installation);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        return sID;
    }

    private static String readInstallationFile(File installation) throws IOException {
        RandomAccessFile f = new RandomAccessFile(installation, "r");
        byte[] bytes = new byte[(int) f.length()];
        f.readFully(bytes);
        f.close();
        return new String(bytes);
    }

    private static void writeInstallationFile(File installation) throws IOException {
        FileOutputStream out = new FileOutputStream(installation);
        String id = UUID.randomUUID().toString();
        out.write(id.getBytes());
        out.close();
    }
}```



- ######**Combined Device ID**
綜上所述浓领,我們一共有五種方式取得設(shè)備的唯一標(biāo)識玉凯。它們中的一些可能會返回null,或者由于硬件缺失联贩、權(quán)限問題等獲取失敗壮啊。但你總能獲得至少一個能用。所以撑蒜,最好的方法就是通過拼接歹啼,或者拼接后的計算出的MD5值來產(chǎn)生一個結(jié)果。

String m_szLongID = m_szImei + m_szDevIDShort
+ m_szAndroidID+ m_szWLANMAC + m_szBTMAC;

MessageDigest m = null;   
    try {
        m = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();   
    }    
m.update(m_szLongID.getBytes(),0,m_szLongID.length());   

// get md5 bytes
byte p_md5Data[] = m.digest();
// create a hex string
String m_szUniqueID = new String();
for (int i=0;i<p_md5Data.length;i++) {
int b = (0xFF & p_md5Data[i]);
// if it is a single digit, make sure it have 0 in front (proper padding)
if (b <= 0xF)
m_szUniqueID+="0";
// add number to string
m_szUniqueID+=Integer.toHexString(b);
} // hex string to uppercase
m_szUniqueID = m_szUniqueID.toUpperCase();```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末座菠,一起剝皮案震驚了整個濱河市狸眼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浴滴,老刑警劉巖拓萌,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異升略,居然都是意外死亡微王,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門品嚣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炕倘,“玉大人,你說我怎么就攤上這事翰撑≌中” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵眶诈,是天一觀的道長涨醋。 經(jīng)常有香客問我,道長逝撬,這世上最難降的妖魔是什么浴骂? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮宪潮,結(jié)果婚禮上溯警,老公的妹妹穿的比我還像新娘趣苏。我一直安慰自己,他們只是感情好愧膀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谣光,像睡著了一般檩淋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上萄金,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天蟀悦,我揣著相機(jī)與錄音,去河邊找鬼氧敢。 笑死日戈,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的孙乖。 我是一名探鬼主播浙炼,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唯袄!你這毒婦竟也來了弯屈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤恋拷,失蹤者是張志新(化名)和其女友劉穎资厉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔬顾,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宴偿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诀豁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窄刘。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖舷胜,靈堂內(nèi)的尸體忽然破棺而出都哭,到底是詐尸還是另有隱情,我是刑警寧澤逞带,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布欺矫,位于F島的核電站,受9級特大地震影響展氓,放射性物質(zhì)發(fā)生泄漏穆趴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一遇汞、第九天 我趴在偏房一處隱蔽的房頂上張望未妹。 院中可真熱鬧簿废,春花似錦、人聲如沸络它。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽化戳。三九已至单料,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間点楼,已是汗流浹背扫尖。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掠廓,地道東北人换怖。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蟀瞧,于是被迫代替她去往敵國和親沉颂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容