Android:获取设备的mac地址可靠的方法

/**
	 * 获取设备的mac地址
	 *
	 * @param ac
	 * @param callback
	 *            成功获取到mac地址之后会回调此方法
	 */
	public static void getMacAddress(final Activity ac, final SimpleCallback callback) {
		final WifiManager wm = (WifiManager) ac .getSystemService(Service.WIFI_SERVICE);

		// 如果本次开机后打开过WIFI,则能够直接获取到mac信息。立刻返回数据。
		WifiInfo info = wm.getConnectionInfo();
		if (info != null && info.getMacAddress() != null) {
			if (callback != null) {
				callback.onComplete(info.getMacAddress());
			}
			return;
		}

		// 尝试打开WIFI,并获取mac地址
		if (!wm.isWifiEnabled()) {
			wm.setWifiEnabled(true);
		}

		new Thread(new Runnable() {
			@Override
			public void run() {
				int tryCount = 0;
				final int MAX_COUNT = 10;

				while (tryCount < MAX_COUNT) {
					final WifiInfo info = wm.getConnectionInfo();
					if (info != null && info.getMacAddress() != null) {
						if (callback != null) {
							ac.runOnUiThread(new Runnable() {
								@Override
								public void run() {
									callback.onComplete(info.getMacAddress());
								}
							});
						}
						return;
					}

					SystemClock.sleep(300);
					tryCount++;
				}

				// 未获取到mac地址
				if (callback != null) {
					callback.onComplete(null);
				}
			}
		}).start();
	}

SimpleCallback是一个简单的回调接口:

public interface SimpleCallback {
	void onComplete(String result);
}
时间: 2024-10-24 08:45:34

Android:获取设备的mac地址可靠的方法的相关文章

获取设备的mac地址可靠的方法

参考自:http://www.open-open.com/lib/view/open1433406847322.html /** * 获取设备的mac地址 * * @param ac * @param callback * 成功获取到mac地址之后会回调此方法 */ public static void getMacAddress(final Activity ac, final SimpleCallback callback) { final WifiManager wm = (WifiMan

Android -- 获取IP和MAC地址

通过InetAddress.getLocalHost()得到始终是"127.0.0.1",要想得到真正的网络ip地址要通过下面的方法: 首先新建一个工程,修改AndroidManifest.xml文件增加用户权限,如下: <uses-permission android:name="android.permission.INTERNET"/> <!--必写--> <uses-permission android:name="a

获取设备的mac地址和IP地址(android6.0以上专用)

/** * 获取设备HardwareAddress地址 * @return */public static String getMachineHardwareAddress(){ Enumeration<NetworkInterface> interfaces = null; try { interfaces = NetworkInterface.getNetworkInterfaces(); } catch (SocketException e) { e.printStackTrace();

Android获取设备采用的时间制式(12小时制式或24小时制式)

/** * 获取设备采用的时间制式(12小时制式或者24小时制式) * 注意: * 在模拟器上获取的时间制式为空 */ private void getTime_12_24(Context context){ ContentResolver contentResolver = context.getContentResolver(); String time_12_24 = Settings.System.getString(contentResolver,Settings.System.TIM

iphone开发之获取网卡的MAC地址和IP地址

本文转载至 http://blog.csdn.net/arthurchenjs/article/details/6358489 这是获取网卡的硬件地址的代码,如果无法编译通过,记得把下面的这几个头文件加上把. #include <sys/socket.h> // Per msqr#include <sys/sysctl.h>#include <net/if.h>#include <net/if_dl.h> #pragma mark MAC addy// Re

windows获取本机MAC地址并写入文件的bat

windows获取本机MAC地址并写入文件的bat MAC(Media Access Control)地址,或称为 MAC地址.硬件地址,用来定义网络设备的位置. bat代码例如以下: @echo off echo GET MAC ADDRESS echo PLEASE WAIT... getmac /v > mac.txt echo GET MAC ADDRESS SUCCESS pause exit 查看mac.txt,获取成功 连接名 网络适配器 物理地址 传输名称 ===========

C#获取IP及MAC地址 方法

C#获取IP及MAC地址 方法,比较齐全 using System.Net; using System; using System.Management; using System.Runtime.InteropServices; public class getIP { [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int

js获取本机mac地址,IP地址,计算机名

<!DOCTYPE HTML> <html> <head> <title>js获取本机mac地址,IP地址,计算机名</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta content="MSHTML 6.00.2800.1106" name="

Unity网络通讯(一)获取计算机的MAC地址

1 string GetMac() 2 { 3 string mac = ""; 4 mac = GetMacAddressBySendARP(); 5 return mac; 6 } 7 [DllImport("Iphlpapi.dll")] 8 static extern int SendARP(Int32 DestIP, Int32 SrcIP, ref Int64 MacAddr, ref Int32 PhyAddrLen); 9 /// <summa