當前位置:首頁 » 安卓系統 » 安卓唯一性識別怎麼用

安卓唯一性識別怎麼用

發布時間: 2025-09-20 21:01:49

A. 如何檢索Android設備的唯一ID

Android的開發者在一些特定情況下都需要知道手機中的唯一設備ID。例如,跟蹤應用程序的安裝,生成用於復制保護的DRM時需要使用設備的唯一ID。
范圍

本文提供有關如何讀取各種Android設備的 ID的介紹,用以使用標識號。本文假定用戶已經安裝了Android以及開發應用程序必要的工具。並且,本文假定用戶已了解Android的基本知識。

簡介在搭載Android操作系統的設備中,已經存在好幾種類型的設備標識號。先前的所有Android設備都具有電話功能,因此查找每部設備硬體唯一的IMEI,MEID,或ESN也很容易。但僅能使用Wifi的設備或音樂播放器沒有電話硬體,所以沒有這種類型的唯一標識號。本文闡述了如何讀取不同Android設備的標識號。檢索Android設備ID各種方式

以下是Android設備不同類型的識別設備ID。

· 唯一編號(IMEI,MEID,ESN,IMSI)

· MAC地址

· 序列號

· ANDROID_ID

唯一編號(IMEI,MEID,ESN,IMSI)

說明在以前,當Android設備均作為電話使用時,尋找唯一標識號比較簡單:()可用於找到(取決於網路技術)手機硬體唯一的IMEI,MEID,ESN和IMSI編號。

TelephonyManager.getDeviceId

IMEI,MEID,ESN,IMSI的定義如下:

•IMEI(國際移動設備識別碼)唯一編號,用於識別 GSM,WCDMA手機以及一些衛星電話(移動設備識別碼)全球唯一編號,用於識別CDMA移動電台設備的物理硬體,MEID出現的目的是取代ESN號段(電子序列號)(電子序列號)唯一編號,用於識別CDMA手機(國際移動用戶識別碼)與所有GSM和UMTS網路手機用戶相關聯的唯一識別編號如需要檢索設備的ID,在項目中要使用以下代碼:

•MEID

•ESN

•IMSI

import android.telephony.TelephonyManager;

import android.content.Context;

String imeistring = null;

String imsistring = null;

{

TelephonyManager telephonyManager;

telephonyManager =

( TelephonyManager )getSystemService( Context.TELEPHONY_SERVICE );

/*

* getDeviceId() function Returns the unique device ID.

* for example,the IMEI for GSM and the MEID or ESN for CDMA phones.

*/

imeistring = telephonyManager.getDeviceId();

/*

* getSubscriberId() function Returns the unique subscriber ID,

* for example, the IMSI for a GSM phone.

*/

imsistring = telephonyManager.getSubscriberId();

}

如要只讀取手機的狀態,則需添加READ_PHONE_STATE許可到AndroidManifest.xml文件中。

<uses-permission

android:name="android.permission.READ_PHONE_STATE" >

</uses-permission>

缺點

•Android設備要具有電話功能

•其工作不是很可靠

•序列號

•當其工作時,該值保留了設備的重置信息(「恢復出廠設置」),從而可以消除當客戶刪除自己設備上的信息,並把設備轉另一個人時發生的錯誤。

Mac地址

說明

可通過檢索找到設備的Wi - Fi或藍牙硬體的Mac地址。但是,不推薦使用Mac地址作為唯一的標識號。

缺點設備要具備Wi – Fi功能(並非所有的設備都有Wi – Fi功能)如果設備目前正在使用Wi - Fi,則不能報告Mac地址

序列號

從Android 2.3(「姜餅」)開始,通過android.os.Build.SERIAL方法序列號可被使用。沒有電話功能的設備也都需要上給出唯一的設備ID; 某些手機也可以需要這樣做。序列號可以用於識別MID(移動互聯網設備)或PMP(攜帶型媒體播放器),這兩種設備都沒有電話功能。通過讀取系統屬性值「ro.serialno」的方法,可以使用序列號作為設備ID 。如檢索序列號並作為設備ID使用,請參考下面的代碼示例。

import java.lang.reflect.Method;

String serialnum = null;

try {

Class<?> c = Class.forName("android.os.SystemProperties");

Method get = c.getMethod("get", String.class, String.class );

serialnum = (String)( get.invoke(c, "ro.serialno", "unknown" ) );

}

catch (Exception ignored)

{

}

缺點

序列號無法在所有Android設備上使用。

ANDROID_ID

說明

更具體地說,Settings.Secure.ANDROID_ID 是一串64位的編碼(十六進制的字元串),是隨機生成的設備的第一個引導,其記錄著一個固定值,通過它可以知道設備的壽命(在設備恢復出廠設置後,該值可能會改變)。 ANDROID_ID也可視為作為唯一設備標識號的一個好選擇。如要檢索用於設備ID 的ANDROID_ID,請參閱下面的示例代碼

String androidId = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID);

缺點

• 對於Android 2.2(「Froyo」)之前的設備不是100%的可靠

• 此外,在主流製造商的暢銷手機中至少存在一個眾所周知的錯誤,每一個實例都具有相同的ANDROID_ID。

結論

對於絕大多數應用來說,只需識別特定的安裝配置,而不需要識別物理設備。所幸是,這樣做就省去了麻煩。

下面是部分使用設備ID的最佳途徑:

•支持各種設備類型的另一種方法是使用getDeviceID()API和ro.serialno的組合

•有許多值得參考的原因,來提醒開發者避免試圖識別特定的設備。對於那些想做一下這方面嘗試的用戶, 最好的辦法可能是使用ANDROID_ID,並在一些傳統設備上做嘗試。

轉載

熱點內容
打開文件夾加密碼 發布:2025-09-20 23:46:37 瀏覽:107
python路徑分割 發布:2025-09-20 23:42:53 瀏覽:324
2012伺服器搭建教程 發布:2025-09-20 23:40:23 瀏覽:67
視頻編譯器教程 發布:2025-09-20 23:38:12 瀏覽:133
zerotier雲伺服器搭建moon 發布:2025-09-20 23:37:55 瀏覽:320
Utilsandroid 發布:2025-09-20 23:00:46 瀏覽:413
阿里雲伺服器系統盤擴容 發布:2025-09-20 22:43:34 瀏覽:197
函數的隱含存儲類別 發布:2025-09-20 22:42:51 瀏覽:799
base64在線加密 發布:2025-09-20 22:41:41 瀏覽:620
appleid密碼驗證哪裡找 發布:2025-09-20 21:42:20 瀏覽:648