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);