獲取Android設備的唯一標識的幾種方式

一前痘、使用IMEI

但是僅僅對Android手機有效,并且添加權(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設備都配備WLAN芹缔,可以通過WLAN地址來作為設備碼,同理瓶盛,也需要加入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 ;
 }

三示罗、使用藍牙地址作為標識

在有藍牙的設備上運行。并且要加入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設備的多樣性蚜点,比如一些平板沒有通話功能,或者部分低價設備沒有WLAN或者藍牙拌阴,甚至用戶不愿意賦予APP這些需要的權(quán)限绍绘,我們就使用無需權(quán)限的方法;這種方式的原理是在程序安裝后第一次運行時生成一個ID,該方式和設備唯一標識不一樣迟赃,不同的應用程序會產(chǎn)生不同的ID陪拘,同一個程序重新安裝也會不同。所以這不是設備的唯一ID纤壁,但是可以保證每個用戶的ID是不同的左刽。可以說是用來標識每一份應用程序的唯一ID(即Installtion ID)摄乒,可以用來跟蹤應用的安裝數(shù)量等悠反。

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

綜上所述馍佑,我們一共有五種方式取得設備的唯一標識吸申。它們中的一些可能會返回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 (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閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異网持,居然都是意外死亡宜岛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門功舀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萍倡,“玉大人,你說我怎么就攤上這事辟汰×星茫” “怎么了阱佛?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長戴而。 經(jīng)常有香客問我瘫絮,道長,這世上最難降的妖魔是什么填硕? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮鹿鳖,結(jié)果婚禮上扁眯,老公的妹妹穿的比我還像新娘。我一直安慰自己翅帜,他們只是感情好姻檀,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涝滴,像睡著了一般绣版。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歼疮,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天杂抽,我揣著相機與錄音,去河邊找鬼韩脏。 笑死缩麸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的赡矢。 我是一名探鬼主播杭朱,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吹散!你這毒婦竟也來了弧械?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤空民,失蹤者是張志新(化名)和其女友劉穎刃唐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袭景,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡唁桩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了耸棒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荒澡。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖与殃,靈堂內(nèi)的尸體忽然破棺而出单山,到底是詐尸還是另有隱情碍现,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布米奸,位于F島的核電站昼接,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏悴晰。R本人自食惡果不足惜慢睡,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铡溪。 院中可真熱鬧漂辐,春花似錦、人聲如沸棕硫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哈扮。三九已至纬纪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滑肉,已是汗流浹背包各。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赦邻,地道東北人髓棋。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像惶洲,于是被迫代替她去往敵國和親按声。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

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