1. 程式人生 > >Android獲取MAC地址大全

Android獲取MAC地址大全

今天幫同學們梳理一下mac、wifi的工具類,持續更新~

/**
 * Created by caoyujie on 16/12/2.
 * Mac地址工具類
 */
public class MacAddressUtils {

    /**
     * 獲取當前連線的wifi的mac地址
     */
    public static String getWifiMacAddress(Context context){
        WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        WifiInfo info = wifi.getConnectionInfo();
        String wifiName = info != null
? info.getBSSID() : ""; return wifiName; } /** * 獲取wifi名稱 */ public static String getWifiName(Context context){ WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifiMgr.getConnectionInfo(); String wifiId = info != null
? info.getSSID() : ""; return wifiId; } /** * 獲取手機Mac地址 * * @return */ public static String getMacAddress(Context mContext) { WifiManager wifiMgr = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInf = wifiMgr.getConnectionInfo(); // wifiInf.getMacAddress().getMacAddress方法在安卓6.0系統上獲取到的Mac 都是 02:00:00:00:00:00。
String invalidMacAddress = "02:00:00:00:00:00"; if (wifiInf.getMacAddress().equals(invalidMacAddress)) { String ret = null; try { ret = getAdressMacByInterface(); if (ret != null) { return ret; } else { ret = getAddressMacByFile(wifiMgr); return ret; } } catch (IOException e) { Log.e("TAG", "Erreur lecture propriete Adresse MAC"); } catch (Exception e) { Log.e("TAG", "Erreur lecture propriete Adresse MAC "); } } else { return wifiInf.getMacAddress(); } return invalidMacAddress; } /** * 獲取6.0以上系統的mac值 * @throws Exception */ private static String getAddressMacByFile(WifiManager wifiMan) throws Exception { String fileAddressMac = "/sys/class/net/wlan0/address"; String ret; int wifiState = wifiMan.getWifiState(); wifiMan.setWifiEnabled(true); File fl = new File(fileAddressMac); FileInputStream fin = new FileInputStream(fl); ret = crunchifyGetStringFromStream(fin); fin.close(); boolean enabled = WifiManager.WIFI_STATE_ENABLED == wifiState; wifiMan.setWifiEnabled(enabled); return ret; } /** * 獲取6.0以上系統的mac值 * @throws Exception */ private static String crunchifyGetStringFromStream(InputStream crunchifyStream) throws IOException { if (crunchifyStream != null) { Writer crunchifyWriter = new StringWriter(); char[] crunchifyBuffer = new char[2048]; try { Reader crunchifyReader = new BufferedReader(new InputStreamReader(crunchifyStream, "UTF-8")); int counter; while ((counter = crunchifyReader.read(crunchifyBuffer)) != -1) { crunchifyWriter.write(crunchifyBuffer, 0, counter); } } finally { crunchifyStream.close(); } return crunchifyWriter.toString(); } else { return "No Contents"; } } private static String getAdressMacByInterface() { try { List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface nif : all) { if (nif.getName().equalsIgnoreCase("wlan0")) { byte[] macBytes = nif.getHardwareAddress(); if (macBytes == null) { return ""; } StringBuilder res1 = new StringBuilder(); for (byte b : macBytes) { res1.append(String.format("%02X:", b)); } if (res1.length() > 0) { res1.deleteCharAt(res1.length() - 1); } return res1.toString(); } } } catch (Exception e) { Log.e("TAG", "Erreur lecture propriete Adresse MAC "); } return null; } }

相關推薦

Android獲取MAC地址大全

今天幫同學們梳理一下mac、wifi的工具類,持續更新~ /** * Created by caoyujie on 16/12/2. * Mac地址工具類 */ public class MacAddressUtils { /** *

Android 獲取Mac地址,相容6.0以下和6.0以上

import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; import android.text.Te

Android獲取Mac地址-相容6.0及以上系統

在網上找了好久如何獲取Android mac地址,最後還是在大谷歌上找到的,經測試,4.0一直到6.0,7.0系統都可以獲取得到Mac地址 在AndroidManifest.xml中加入以下許可權: <uses-permission android:name="android.permission

Android 手機獲取Mac地址的方法

轉載地址:https://blog.csdn.net/yushuangping/article/details/83245847 這期需求,要求從系統裝置上獲取一個唯一碼作為當前登入使用者的唯一標識,最後決定採用mac地址。 第一種: 官方獲取

(一百零五)Android O 獲取mac地址流程分析

1.流程分析 1.1 WifiInfoPreferenceController public void updateWifiInfo() { if (mWifiMacAddressPref != null) { final

Android中Wifi未開啟情況下獲取Mac地址

原來以為沒有開啟wifi功能是不能夠獲取wifi網絡卡mac地址的,在真機測試後發現能夠獲取到Mac地址只是獲取的ip為0,當然wifi未連線狀態下是肯定沒有IP分配的。具體看看下面: AndroidManifest.xml程式碼: 1  Java程式碼   <

Android 不開WiFi獲取Mac地址 夜未央

這是我在網站上找到的資料 整理一下 不知道哪天會用到  //在不開起WiFi的情況下獲取mac地址 public static String getLocalMacAddress() { Stri

Android 手機獲取Mac地址的幾種方法

最常用的方法,通過WiFiManager獲取: /** * 通過WiFiManager獲取mac地址 * @param context * @return */ private static String t

獲取MAC地址方法大全

Windows平臺下用C++程式碼取得機器的MAC地址並不是一件簡單直接的事情。到目前為止,作者尚未發現有任何一個通用的100%的適用於所有Windows平臺的方法可以穩定的取得MAC地址。而有些應用(比如MMORPG)則需要穩定的得到機器的MAC地址,解決方案往往是通過

安卓獲取MAC地址,適配Android 6.0

用Android6.0、Android7.1.1測試過程中發現獲取MAC地址返回的是“02:00:00:00:00:00”,這個地址一看就不是真實的MAC地址,所以百度了一下,原因由於Android 6.0變更。 原文如下: Android 6.0 變更:硬

Linux 獲取 MAC 地址並去除 : 字符

字符 去除 linu span onf ifconf mac eth grep ifconfig -a | grep eth0 | awk -F ' ' '{print $5}' | sed 's/://g'Linux

XAMARIN Android獲取WIFIMAC地址的方法

1. 常用方法,呼叫Android的API:WifiManager <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> WifiManager wifi =

Android 乙太網MAC地址,wifiMAC地址

public String getMAC() { // 獲取連線狀態 ConnectivityManager mConnectivity = (ConnectivityManager)getSystemService(Con

Android獲取IP地址的兩種方式(準確版)

最近看了好多網上獲取IP地址的例子,發現好多都不完全準確,這裡我寫一下獲取ip地址的兩種方式。 比如微信支付,後臺在做介面的時候,要求App端傳入IP地址,我們需要判斷是網路環境,WI-FI還是3G,所以需要獲取這兩種環境的ip地址。 第一步:首先是判斷網路環境: Stri

vc獲取mac地址(無線網絡卡和有線網絡卡)

獲取網絡卡的MAC地址的方法很多,如:Netbios,SNMP,GetAdaptersInfo等。經過測試發現 Netbios 方法在網線拔出的情況下獲取不到MAC,而 SNMP 方法有時會獲取多個重複的網絡卡的MAC,試來試去還是 GetAdaptersInfo 方法比較

c語言 獲取mac地址

#include #include #include #include #include #include int main(int argc, char *argv[]){ int i; /* get mac */

shell獲取mac地址

http://blog.csdn.net/shaobingj126/article/details/7376737 可用使用 #讀取伺服器的MAC地址       MAC=$(ifconfig eth0|grep eth0|awk '{print $5}')       #

linux 設定網路API --- 開/關網絡卡、設定/獲取Mac地址

最近在做專案過程中,由於在多執行緒中使用system函式,有時候出現莫名程式異常終止,最後決定替換所有的system函式,但是對於設定mac地址這個函式試了很多次都沒有成功;今天在此總結下原因: 1. 編寫的關閉/開啟網絡卡函式沒有延時;(一般情況設定開關網絡卡可能需要初始

Android6.0 獲取MAC地址

最近接觸6.0,發現使用單純的wifiManager.getConnectionInfo().getMacAddress();方法獲取不到MAc地址。後來Google一下發現 Google對硬體資訊的訪問,其管控更加嚴格。SD 卡的讀寫,除了許可權宣告之外,還應

android獲取手機資訊大全

IMEI號,IESI號,手機型號: private void getInfo() { TelephonyManager mTm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);