Ⅰ 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) {
Ⅱ 如何獲取android設備的imei號
獲取android設備的imei號可以打開撥號盤,輸入*#06#即可查看IMEI號。
國際移動設備識別碼(IMEI:International Mobile Equipment Identification Number)是區別移動設備的標志,儲存在移動設備中,可用於監控被竊或無效的移動設備。IMEI可用移動終端設備通過鍵入"*#06#"查得(不同廠商的手機所需輸入的內容不同,同一廠商不同手機所需輸入的內容也可能不同)。其總長為15位,每位數字僅使用0~9的數字(含義見下文)。
IMEI俗稱"串號",存儲在手機的EEPROM(俗稱"碼片")里,熟悉並了解這個號碼對我們今後識別手機會起到非常大的作用。
Ⅲ 安卓手機怎麼查看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碼。
Ⅳ 安卓IMEI是一個什麼文件類型
IMEI(International
Mobile
Equipment
Identity)是移動設備國際身份碼的縮寫,移動設備國際辨識碼,是由15位數字組成的"電子串號",它與每台手機一一對應,而且該碼是全世界唯一的。每一部手機在組裝完成後都將被賦予一個全球唯一的一組號碼,這個號碼從生產到交付使用都將被製造生產的廠商所記錄。手機用戶可以在手機中查到自己手機的IMEI碼。
可見,IMEI並不是什麼文件類型。
Ⅳ 為什麼很多安卓應用都要獲取IMEI
IMEI是一個串號,每個手機出廠都有的。
IMSI確實可以用來識別每一個移動用戶,但是IMSI很長,很難記憶,另外,傳統電話號碼都用0-9的數字來表示,有個用戶習慣問題。所以就規定了ISDN號碼,即我們現在用的手機號碼,通過設定和IMSI號碼綁定來識別用戶。
ISDN號碼完全是規定,因為香港的移動號碼和固話是相同的。原來cdma制式的大靈通也採用的是固定電話的編號方式。
其實那都是軟體開發者的統計需要,裝個看書軟體也啥都要查看聯系人,查看簡訊,後台發簡訊,後台打電話,查看地里位置,有不要嘛?當然沒有,但是他可以調查我們的愛好,然後後台給我們推軟體,當然會跑流量也存在偷窺我們隱私功能,你可以用聯想的樂安全和LBE安全大師這倆安全軟體可以禁止一切後台啟動和限制查看我們的隱私。預防流量丟失和後台開啟我們的錄音,電話,簡訊,攝像頭功能等。
回答不容易,希望能幫到您,滿意請幫忙採納一下,謝謝
Ⅵ 安卓IMEI存儲在哪裡如何修改
IMEI俗稱「手機串號」,存儲在手機的EEPROM(俗稱「碼片」)里。用手機鍵盤輸入*#06#,屏幕上顯示的IMEI。目前除了廠家用專用設備,無法修改。
參考資料:
IMEI(International Mobile Equipment Identity)是移動設備國際身份碼的縮寫,IMEI由15位數字組成。
IMEI是區別移動設備的標識,儲存在移動設備中,可用於監控被竊或無效的移動設備。IMEI印在手機機身背面的標志上,如圖1所示;並且讀寫存儲在手機內存中。它也是該手機在廠家的「檔案」和「身份證號」。
購買手機時,可以檢查以下幾處的IMEI是否一致:
手機機身上的IMEI
包裝盒上的IMEI
保修卡上的IMEI
用手機鍵盤輸入*#06#,屏幕上顯示的IMEI。不同廠商的手機所需輸入的內容不同,同一廠商不同手機所需輸入的內容也可能不同。
IMEI俗稱「手機串號」,存儲在手機的EEPROM(俗稱「碼片」)里,熟悉並了解這個號碼對我們今後識別手機會起到非常大的作用。
Ⅶ 為什麼很多安卓應用都要獲取IMEI
IMEI(International Mobile Equipment Identity,移動設備國際識別碼,又稱為國際移動設備標識)是手機的唯一識別號碼。我們從這個縮寫的全稱中來分析它的含義:
「移動設備」就是手機,不包括攜帶型電腦。
「國際」這個字眼也表明了它可辨識的范圍是全球,即全球范圍內IMEI不會重復。
「身份」表明了它的作用,是辨識不同的手機;一機一號,類似於人的身份證號。
「碼」字又說明它是一串編號,常稱為手機的「串號」、「電子串號」。
手機在生產時,就被賦予一個IMEI。作為App用戶的唯一ID,IMEI是個很好的因素。所以基本上所有需要網路服務的Apps都會需要讀取IMEI來區分用戶,而且是每次通信都需要讀取。
像天貓(支付寶)/微信這樣的登陸時校驗一下設備串號是有意義的,這是用來確保是由你的設備在登陸。
Ⅷ android imei是唯一的嗎
android手機只有IMEI是硬體唯一標識,其它標識都是不可靠的,因為IMEI需要到國際移動設備登記處登錄注冊的。 java獲得android的imei號步驟: 1、許可權添加: <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 2、調用android的api TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); String IMEI = telephonyManager.getDeviceId(); 3、adb命令獲得: adb shell mpsys iphonesubinfo 4、任何手機都可以在撥打電話的界面輸入*#06# 來查看IMEI。