簡體   English   中英

Android獲取設備的唯一ID

[英]Android get unique id for device

我需要將應用程序訂閱限制為每個用戶一定數量的設備。 為此,我試圖獲取Android手機的唯一ID(硬件)。 我發現以下選項,但所有選項都有某些問題。 有沒有解決這些問題的解決方案?

  • 使用TelephonyManager API( getDeviceId )的Imei / Mei號碼-如果雙卡同時存在有效和無效的SIM卡插槽,這將是一個問題。
  • AndroidId-將在恢復出廠設置時重置
  • Wifi Mac號碼-需要連接wifi以獲取此號碼,非wifi設備將不存在此號碼。
  • 廣告ID-可由用戶重置
  • 實例ID-可以在恢復出廠設置時重置
  • SIM卡序列號 -不綁定到設備,而是用於SIM卡

經過搜索和思考,我提出了以下解決方案。

MacID可以用作唯一ID。 即使在Wifi關機狀態下,也可以使用權限android.permission.READ_PHONE_STATE獲得MacID。 我已經在少數設備中成功測試了這些設備,並且工作正常。 我的測試正在進行中,很快會在這里更新。

public static String getDeviceMacId(){
        try {
            List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
            for (NetworkInterface nif : all) {
                if (!nif.getName().equalsIgnoreCase("wlan0")) continue;

                byte[] macBytes = nif.getHardwareAddress();
                if (macBytes == null) {
                    return "";
                }

                StringBuilder res1 = new StringBuilder();
                for (byte b : macBytes) {
                    res1.append(String.format("%02X:",b));
                }

                if (res1.length() > 0) {
                    res1.deleteCharAt(res1.length() - 1);
                }
                return res1.toString();
            }
        } catch (Exception ex) {
            //handle exception
        }
        return "";
    }



參考: https : //stackoverflow.com/a/35830358/2788009

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM