最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android開發(fā)-獲取Android設(shè)備的唯一標(biāo)識碼(Android6.0或更高)

在我們的APP開發(fā)中,通常需要獲取到設(shè)備的唯一標(biāo)識。在Android6.0之前,有很多方法我們可以方便獲取到硬件的唯一標(biāo)識,但是在Android6.0之后,Android系統(tǒng)大幅限制了我們獲取設(shè)備的硬件信息。

創(chuàng)新互聯(lián)公司主營浮梁網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機APP定制開發(fā),浮梁h5小程序開發(fā)搭建,浮梁網(wǎng)站營銷推廣歡迎浮梁等地區(qū)企業(yè)咨詢

Android6.0之前的方法(已過時)

  1. DEVICE_ID
    通getSystemService(Context.TELEPHONY_SERVICE).getDeviceId()獲取,但是6.0之后必須申請READ_PHONE_STATE,并且獲取到的這個值在不同的廠商和設(shè)備中并不可靠。

  2. MAC地址
    這個是無線網(wǎng)卡的MAC地址,這個需要ACCESS_WIFI_STATE權(quán)限,并且很多情況下并獲取不到這個值,也并不是十分可靠。

  3. ANDROID_ID
    這個值是當(dāng)一個新的設(shè)備第一次啟動時,或者恢復(fù)出廠設(shè)置時,系統(tǒng)會生成一個64位的數(shù)字,這個值目前(Android4.0之后)已經(jīng)非??煽?,但是仍有個別廠商的定制系統(tǒng)的BUG,導(dǎo)致這個值返回null。

獲取設(shè)備唯一標(biāo)識的正確姿勢

由于ANDROID_ID的值相對穩(wěn)定和可靠,并且不需要申請權(quán)限,所以我們獲取設(shè)備的唯一標(biāo)識應(yīng)該使用這個值,同時我們應(yīng)該考慮到一些極端情況和安全問題。

  1. 獲取ANDROID_ID
public static String getAndroidID() {
    String id = Settings.Secure.getString(
            Utils.getApp().getContentResolver(),
            Settings.Secure.ANDROID_ID
    );
    return id == null ? "" : id;
}
  1. 構(gòu)造UUID,防止直接暴露ANDROID_ID
private static String getDeviceUUid()
{
   String androidId = DeviceUtils.getAndroidID();
   UUID deviceUuid = new UUID(androidId.hashCode(), ((long)androidId.hashCode() << 32));
   return deviceUuid.toString();
}
  1. 考慮極端情況,我們自己生成一個應(yīng)用級別的UUID
    這種情況我們需要將生成的UUID保存到SharedPreference中,只要應(yīng)用不被卸載或者清除數(shù)據(jù),這個值就不會變。
private static String getAppUUid() {
   String uuid = SPUtils.getInstance().getString(PREF_KEY_UUID);
   if (TextUtils.isEmpty(uuid)) {
       uuid = UUID.randomUUID().toString();
       //這里需要保存到SharedPreference中
       ...
   }
   return uuid;
}
  1. 將上面的獲取方法封裝到一個方法中
public static String getUUID() {
    String uuid = getDeviceUUid();
    if (TextUtils.isEmpty(uuid)) {
        uuid = getAppUUid();
    }
    return uuid;
}

總結(jié)

這些獲取UUID方法非常簡單,并且在應(yīng)用的開發(fā)中可以滿足99%的需求,不需要動態(tài)申請權(quán)限,也非??煽?,但是在使用時需要清楚其生成過程,以便應(yīng)用到安全性要求非常高的場景中。

如有更多疑問,請參考我的其它Android相關(guān)博客:我的博客地址


當(dāng)前名稱:Android開發(fā)-獲取Android設(shè)備的唯一標(biāo)識碼(Android6.0或更高)
網(wǎng)頁路徑:http://fisionsoft.com.cn/article/jccssg.html