1. 程式人生 > >獲取裝置唯一識別碼和Mac地址

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

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

DeviceInfoUtil:

package com.home;

import java.util.UUID;

import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.provider.Settings.Secure;
import android.telephony.TelephonyManager;

public class DeviceInfoUtil {

	/**
	 * 得到裝置AndroidID,需要裝置新增 Google賬戶
	 * 
	 * @param context
	 * @return
	 */
	public static String getAndroidID(Context context) {
		String androidID = Secure.getString(context.getContentResolver(),
				Secure.ANDROID_ID);
		return androidID;
	}

	/**
	 * 得到裝置IMEI值
	 * 
	 * @param context
	 * @return
	 */
	public static String getIMEI(Context context) {
		TelephonyManager tm = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
		return tm.getDeviceId();
	}

	/**
	 * 得到裝置序列號
	 * 
	 * @param context
	 * @return
	 */
	public static String getSimSerialNumber(Context context) {
		TelephonyManager tm = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
		return tm.getSimSerialNumber();
	}

	/**
	 * 得到裝置唯一識別碼
	 * 
	 * @param context
	 * @return
	 */
	public static String getUniqueNumber(Context context) {
		String androidID = getAndroidID(context);
		String imei = getIMEI(context);
		String simSerialNumber = getSimSerialNumber(context);
		UUID uuid = new UUID(androidID.hashCode(),
				((long) imei.hashCode() << 32) | simSerialNumber.hashCode());
		return uuid.toString();
	}

	/**
	 * 獲取裝置本身網絡卡的MAC地址
	 * 
	 * @param context
	 * @return
	 */
	public static String getWLANMACAddress(Context context) {
		String macAddress = "";
		WifiManager wm = (WifiManager) context
				.getSystemService(Context.WIFI_SERVICE);
		WifiInfo info = wm.getConnectionInfo();
		if (info != null) {
			macAddress = info.getMacAddress();
		} else {
			macAddress = "No Wifi Device";
		}
		return macAddress;
	}

	/**
	 * 獲取藍芽MAC地址
	 * 
	 * @param context
	 * @return
	 */
	public static String getBluetoothMACAddress(Context context) {
		String btMacAddress = "";
		BluetoothAdapter ba = BluetoothAdapter.getDefaultAdapter();
		if (ba != null) {
			if (!ba.isEnabled()) {
				btMacAddress = "Bluetooth not open";
				// 啟動藍芽
				Intent in = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
				context.startActivity(in);
			} else {
				btMacAddress = ba.getAddress();
			}

		} else {
			btMacAddress = "No Bluetooth Device";
		}
		return btMacAddress;
	}
}


 許可權:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>

相關推薦

獲取裝置唯一識別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

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

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

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

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

如何獲取Android裝置唯一識別

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

Android 手機獲取物理唯一標識IMEI號IMSI號

開發者可以通過物理唯一標識碼和IMEI號 來得知 應用有多少使用者安裝,或者正在使用。 物理唯一標識碼 即 ANDROID_ID   是手機系統的唯一號碼。 IMEI號是唯一識別手機的號碼。 IMSI號是與SIM唯一對應的號碼 優缺點: 1.ANDROID_

Android獲取裝置唯一標識

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

獲取手機唯一識別

package com.shkf.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.annotation.Supp

獲取手機唯一識別IMEI

1. 前言 獲取IMEI相信大家非常熟悉,但是專案中使用時,發現當手機卡為電信的時候,獲取的並不是IMEI,而是MEID,什麼是MEID,為什麼會出現這種情況呢? IMEI國際移動裝置識別碼(IMEI:International Mobile Equipme

android 獲取手機唯一識別

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

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

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

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

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

根據mac地址+deviceid獲取裝置唯一編碼 獲取手機及SIM卡相關資訊

根據mac地址+deviceid獲取裝置唯一編碼: private static String DEVICEKEY = ""; /** * 根據mac地址+deviceid

獲取Android裝置唯一識別

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

獲取Android裝置唯一識別UUID

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

Android獲取裝置IMEIMac地址

public static boolean checkPermission(Context context, String permission) { boolean result = false; if (Build.VERSION

Android裝置獲取唯一識別

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

LINUX下獲取網絡卡IP地址MAC地址,子網掩程式參考

/* mode time:20120727 LINUX下獲取IP地址和MAC地址.程式相關結構體在程式後面。 列印網絡卡的ip地址 子網掩碼 廣播地址 mac地址 環境: [[email protected] temp]# uname -a Linux b

C/C++:Windows程式設計—程式碼獲取本地所有網絡卡資訊(網絡卡描述,IP地址,子網掩MAC地址

先看效果 看程式碼 使用 GetAdaptersInfo 函式獲取網絡卡的所有資訊。 MSDN函式說明 https://docs.microsoft.com/en-us/windows/desktop/api/iphlpapi/nf-iphlpapi-getadapters

獲取Android裝置唯一標識

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