1. 程式人生 > >如何獲取Android裝置唯一識別碼

如何獲取Android裝置唯一識別碼

如果我們想唯一識別一臺Android裝置,就需要獲取裝置的唯一識別碼。怎麼獲取呢?

下面是Android裝置一些可供選擇的唯一識別碼及其適用範圍:

IMEI (International Mobile Equipment Identity Number,國際移動裝置識別碼)

  • 用於在手機網路中識別每一部獨立的手機
  • 對於不在手機網路的裝置(如Android平板),就不能使用IMEI來識別。

IMSI (International Mobile Subscriber Identity,國際移動使用者識別碼)

  • 它是在公眾陸地行動電話網(PLMN)中用於唯一識別移動使用者的一個號碼,在GSM網路,這個號碼通常被存放在SIM卡中
  • 跟IMEI一樣,對於不在手機網路的裝置就不能使用IMSI來識別。
  • 64位的十六進位制字串,裝置首次啟動時會隨時生成
  • 如果裝置恢復了出廠設定,這個值可能會改變
  • 裝置root了之後,這個值可以手動修改
  • Android 2.2發現bug,部分裝置具有相同Android ID(9774d56d682e549c),模擬器的Android ID也是這個
  • 這個值有時會為null
  • 一般不推薦使用
Java
12privateStringandroidId=Secure.getString(getContext().getContentResolver(),Secure
.ANDROID_ID);
  • 唯一的裝置ID,如GSM網路的IMEI,CDMA網路的MEID / ESN,可能返回null(API文件的描述)
  • 只對手機裝置有效,對於不在手機網路的裝置,會返回null
  • 獲取到的Device ID值,即使裝置恢復出廠設定也不會改變
  • 需要READ_PHONE_STATE許可權
  • 某些裝置的Device ID實現有bug,會返回0或*
Java
1 2 TelephonyManager tm=(TelephonyManager)getSystemService(TELEPHONY_SERVICE); StringdeviceId
=tm.getDeviceId();

Serial Number

  • 需要READ_PHONE_STATE許可權

WiFi MAC  Address

  • 不是所有Android裝置都有WiFi
  • 對於有WiFi的裝置,如果WiFi沒有開啟,可能獲取不了WiFi MAC地址
  • 需要ACCESS_WIFI_STATE許可權
Java
12WifiManager wm=(WifiManager)Context.getSystemService(Context.WIFI_SERVICE);StringwifiMac=wm.getConnectionInfo().getMacAddress();

BlueTooth MAC Address

  • 如果沒有開啟BlueTooth,可能獲取不了BlueTooth MAC地址
  • 需要BLUETOOTH許可權
Java
1 2 3 BluetoothAdapter bluetoothAdapter=null;// Local Bluetooth adapter bluetoothAdapter=BluetoothAdapter.getDefaultAdapter(); StringbluetoothMac=bluetoothAdapter.getAddress();

UUID(Universally unique identifier,通用唯一識別符號)

Java
12345678910111213141516171819202122232425262728293031323334// 方法1publicclassInstallation{privatestaticStringsID=null;privatestaticfinalStringINSTALLATION="INSTALLATION";publicsynchronizedstaticStringid(Context context){if(sID==null)

相關推薦

如何獲取Android裝置唯一識別

如果我們想唯一識別一臺Android裝置,就需要獲取裝置的唯一識別碼。怎麼獲取呢? 下面是Android裝置一些可供選擇的唯一識別碼及其適用範圍: IMEI (International Mobile Equipment Identity Number,國際移動裝置識別碼) 用於在手機網路中識別

獲取Android裝置唯一標識

唯一標識碼這東西在網路應用中非常有用,例如檢測是否重複註冊之類的。import android.provider.Settings.Secure;private String android_id = Secure.getString(getContext().getContentResolver(),

iOS 獲取裝置唯一識別 IDFV+keychain

最近專案中需要獲取到裝置的唯一標誌傳送給後臺儲存備用,在UDID UUID IDFA等都存在諸多問題(什麼問題可以自己查閱資料)的情況下,選擇了 IDFV+keychain(當然特殊情況下也存在些許問題,但基本無影響,非常夠用)。 identifierForVendor是a

穩定獲取Android裝置唯一(UUID)的解決方案

最近做的一個專案中需要用到Android裝置唯一碼(UUID)來標識一臺裝置, Android中裝置唯一碼有很多,如:MAC地址、IMEI號(DeviceId)、IMSI號、ANDROID_ID、序列號(SerialNumber)等, 但並不是所有裝置上都能穩定獲取到這些值。 最後專案中採用的是MAC地址

獲取裝置唯一識別和Mac地址

下面這個工具類提供了一些方法,可以獲取裝置AndroidID、IMEI、序列號、以及由他們組成的唯一識別碼、網絡卡的MAC地址、藍芽MAC地址。程式碼如下: DeviceInfoUtil: package com.home; import java.util.UUID;

(轉)獲取裝置唯一識別和Mac地址

下面這個工具類提供了一些方法,可以獲取裝置AndroidID、IMEI、序列號、以及由他們組成的唯一識別碼、網絡卡的MAC地址、藍芽MAC地址。程式碼如下: DeviceInfoUtil: 001.packagecom.home; 002. 003.importja

Android開發——獲取並生成唯一識別

方法一:不需要許可權(推薦) 使用一些不需要許可權的硬體裝置碼來生成Android裝置的唯一識別碼 //獲得獨一無二的Psuedo ID public static String get

[Android][獲取Android裝置唯一標識]

1.落筆緣由 最近需要獲取能夠標誌Android裝置的唯一標識,但是由於Android系統版本不同或者root等諸多原因,造成有些裝置標識為NULL或者標識相同的問題,在網上搜索了相關資料,總結一下各種情況。 2.程式碼 import android.

獲取Android裝置唯一識別裝置號|序號|UUID

如何獲取一個能唯一標識每臺Android裝置的序號? 這個問題有很多答案,但是他們中的大部分只在某些情況下有效。 根據測試: 所有的裝置都可以返回一個 TelephonyManager.getDeviceId() 所有的GSM裝置 (測試裝置都裝載有SIM卡) 可以

Android之如何獲取Android裝置唯一識別筆記

因為需要在專案中需要獲得一個穩定、可靠的裝置唯一識別碼,因此搜了一些網上的資料。今天我們將介紹幾種方式。        1. DEVICE_ID 假設我們確實需要用到真實裝置的標識,可能就需要用到DEVICE_ID。在以前,我們的Android裝置是手機,這個 DE

獲取Android裝置唯一識別

 1、所有的裝置都可以返回一個 TelephonyManager.getDeviceId() 2、所有的GSM裝置 (測試裝置都裝載有SIM卡) 可以返回一個TelephonyManager.getSimSerialNumber() 3、所有的CDMA 裝置對於

獲取Android裝置唯一識別UUID

如何獲取一個能唯一標識每臺Android裝置的序號? 這個問題有很多答案,但是他們中的大部分只在某些情況下有效。 根據測試: 所有的裝置都可以返回一個 TelephonyManager.getDeviceId() 所有的GSM裝置 (測試裝置都裝載有

Android裝置獲取唯一識別

Android系統以及裝置都有很多的“標識”號,比如常見的IMEI,SerizalNumber,UUID等概念,但是這些都存在一定程度上的不可靠性,到底如何標記一臺Android裝置? DEVICE_ID 假設我們確實需要用到真實裝置的標識,可能就需要用到DEVICE

Android開發 - 獲取Android裝置唯一標識(Android 6.0或更高)

在我們的APP開發中,通常需要獲取到裝置的唯一標識。在Android6.0之前,有很多方法我們可以方便獲取到硬體的唯一標識,但是在Android6.0之後,Android系統大幅限制了我們獲取裝置的硬體資訊。 Android6.0之前的方法(已過時) DEVICE_ID通getSyste

獲取Android裝置唯一標識(Android 6.0或更高)

在我們的APP開發中,通常需要獲取到裝置的唯一標識。在Android6.0之前,有很多方法我們可以方便獲取到硬體的唯一標識,但是在Android6.0之後,Android系統大幅限制了我們獲取裝置的硬體資訊。 Android6.0之前的方法(已過時) D

Android獲取裝置唯一標識

話不多說,先貼程式碼 /**獲取裝置唯一標識碼
 * @param context 上下文
 * @return 裝置唯一標識碼
 */
 public static String getUDID

獲取Android系統的唯一識別

在計算機上,我們習慣用MAC地址來標誌一臺計算機。在Android裝置上,可以用IMIE或者Android ID來標誌一個裝置。 看一下Android上怎樣獲取這樣的資訊。 一個是Teleph

HTML5+下用js獲取裝置唯一識別和本地資料庫的操作

首先獲取裝置的唯一標識,由於ios稽核的阻擋,我現在只是獲取它idfa來作為唯一識別碼(這個會被重置,如果idfa不重要的話是可以考慮此方法的),Android就不用多說了if(ua.match(/iphone\sOS/i) == "iphone os"){//識別裝置ios

android 獲取手機唯一識別

//如果獲取不到imsi號,就拼接其它資訊獲取唯一碼: 結論是,依然有部分手機獲取不到。 final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context

獲取 Android 裝置唯一標識

這個問題有很多答案,但是他們中的大部分只在某些情況下有效。 根據測試: 所有的裝置都可以返回一個 TelephonyManager.getDeviceId() 所有的GSM裝置 (測試裝置都裝載有SIM卡) 可以返回一個TelephonyManager.getSim