1. 如何獲取android設備的imei號
獲取android設備的imei號可以打開撥號盤,輸入*#06#即可查看IMEI號。
國際移動設備識別碼(IMEI:International Mobile Equipment Identification Number)是區別移動設備的標志,儲存在移動設備中,可用於監控被竊或無效的移動設備。IMEI可用移動終端設備通過鍵入"*#06#"查得(不同廠商的手機所需輸入的內容不同,同一廠商不同手機所需輸入的內容也可能不同)。其總長為15位,每位數字僅使用0~9的數字(含義見下文)。
IMEI俗稱"串號",存儲在手機的EEPROM(俗稱"碼片")里,熟悉並了解這個號碼對我們今後識別手機會起到非常大的作用。
2. android imei獲取
隨著android系統不斷升級,android設備的imei號已經越來越難獲取了。網上一些推薦會用meid、androidid來代替imei號。但是因為項目推廣需要比對渠道那邊回傳imei號來確認新增。
發現部分機型渠道(eg:快手)可以獲取到而我們獲取不到,導致無法確認新增。最終在TelephonyManager中找到getDeviceSoftwareVersion()方法。可以變相實現獲取imei號(但也會有getDeviceSoftwareVersion獲取不到的機型,不過驗證渠道那邊也獲取不到了)。
public static String getIMEI() {
TelephonyManager telephonyManager = (TelephonyManager) BaseApplication.getAppContext().getSystemService(Context.TELEPHONY_SERVICE);
String imei = null;
if (AndPermission.hasPermissions(BaseApplication.getAppContext(), Manifest.permission.READ_PHONE_STATE)) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
imei = telephonyManager.getImei();
if (!TextUtils.isEmpty(imei)) {
return imei;
} else {
String softwareVersion = getDeviceSoftwareVersion();
if (!TextUtils.isEmpty(softwareVersion) && softwareVersion.length() > 14) {
String imeiHead = softwareVersion.substring(0, 14);
imei = imeiHead + luhn(imeiHead);
return imei;
} else {
return null;
}
}
} else {
return telephonyManager.getDeviceId();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return imei;
}
/**
* Luhn演算法
* 根據號碼獲取校驗位
*
* @param cardNumber
* @return
*/
public static int luhn(String cardNumber) {
int totalNumber = 0;
for (int i = cardNumber.length() - 1; i >= 0; i -= 2) {
int tmpNumber = calculate(Integer.parseInt(String.valueOf(cardNumber.charAt(i))) * 2);
if (i == 0) {
totalNumber += tmpNumber;
} else {
totalNumber += tmpNumber + Integer.parseInt(String.valueOf(cardNumber.charAt(i - 1)));
}
其實是因為getDeviceSoftwareVersion和getImei()拼接規則只有末位兩個數不相同,而imei的末位數可以通過luhn演算法獲取,從而拼接成imei值(自測有效)。
但是畢竟還是有部分機型獲取不到imei,可以使用oaid來補充說明。
如果是自己app內部做唯一標識的話可以用meid、androidid或deviceid來代替imei
public static String getUniqueId() {
TelephonyManager telephonyManager = (TelephonyManager) BaseApplication.getAppContext().getSystemService(Context.TELEPHONY_SERVICE);
if (AndPermission.hasPermissions(BaseApplication.getAppContext(), Manifest.permission.READ_PHONE_STATE)) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
3. 雙卡雙待的安卓手機,有兩個imei,app獲取的是哪個還是設備標識是唯一的
哪個APP獲取?兩個都是可以獲取到的,很多手機關於本機裡面IMEI只會顯示第一個,新機防偽認證貼的條碼上應該會列出所有IMEI
4. android怎麼獲得雙卡imsi和imei
getSimSerialNumber()是獲取IMEI的
getSubscriberId()才是獲取IMSI的
MTK的是getSubscriberIdGemini(int simId)
對應的getSimSerialNumberGemini(int simId)
高通平台有單獨的類MSimTelephonyManager裡面有方法
getSubscriberId(int simId)
getSimSerialNumber(int simId)
高通平台介面不太確定各個廠商是否都是這樣.據說之前高通雙卡方案代碼是外包的,可能不太一樣.
simId 0應該是主卡 1是次卡
要用反射掉,不是原生介面
5. 安卓手機怎麼查看IMEI號
IMEI碼是移動設備國際身份碼的縮寫,由15位數字組成。每部正規的手機至少會有一個IMEI碼(雙卡手機有兩個IMEI碼),SN碼和IMEI碼可以注冊論壇VIP、查詢手機真偽等。
溫馨提示:IMEI碼不可以修改或注銷。
vivo手機IMEI碼查詢方法:
1、打開撥號盤,在撥號界面輸入 *#06# 即可;
2、①Funtouch OS 9.2/iQOO Monster UI及以上:進入手機設置--我的設備--更多參數中,可查詢到;
②Funtouch OS 9.2以下:進入設置--更多設置--關於手機中查詢;
3、手機包裝盒上會有一張標注手機信息的的貼紙,在上面查看到IMEI碼;
4、手機包裝盒中的「重要信息與保修卡」冊子,貼有手機的IMEI碼。
6. android怎麼獲取手機imei號
您可以通過手機設置的關於本機選項下查看手機IMEI碼。
也可以通過撥號鍵盤輸入*#06#獲得。