2013-01-07 2 views
2

나는 .. 나는 이미 다음과 같은 코딩을 수행 한 .. 장치의 MAC 주소를 표시합니다 안드로이드 응용 프로그램을 설계하는코드를 통해 안드로이드 장치의 MAC 주소를 가져 오는 방법 (WIFI가 꺼져 있음)? 와이파이가 켜져있을 때이 코드는 작동하고,

WifiManager wifimanager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
WifiInfo winfo = wifimanager.getConnectionInfo(); 
String MACAddress = winfo.getMACAdress(); 

필요하지만 문제는 에,하지만 내 요구 사항은 와이파이가 켜져 있는지 여부를 MAC 주소를 찾을 수 있습니다.

+0

Java가'SystemService'를'WifeManager'로 변환하려고 시도했을 때 예외를 던질 것이라 확신합니다 ... FTFY! :) – ErikE

답변

7

다음은 wifi 관리자를 사용하지 않고 getMac 주소에 대한 코드입니다.

public static String getMACAddress(String interfaceName) { 
    try { 
     List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); 
     for (NetworkInterface intf : interfaces) { 
      if (interfaceName != null) { 
       if (!intf.getName().equalsIgnoreCase(interfaceName)) continue; 
      } 
      byte[] mac = intf.getHardwareAddress(); 
      if (mac==null) return ""; 
      StringBuilder buf = new StringBuilder(); 
      for (int idx=0; idx<mac.length; idx++) 
       buf.append(String.format("%02X:", mac[idx]));  
      if (buf.length()>0) buf.deleteCharAt(buf.length()-1); 
      return buf.toString(); 
     } 
    } catch (Exception ex) { } 
    return ""; 

} 

일부 안드로이드 장치는 무선 랜을 사용할 수 없거나 이더넷 배선을 사용 중일 수 있습니다. 을 사용하고 네트워크별로 사용할 수있는이 메서드를 호출하십시오.

getMACAddress("wlan0"); //using wifi available 
getMACAddress("eth0"); //using ethernet connection availale 

명시 적 권한을 설정하는 것을 잊지 마십시오.

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

감사합니다 Neurenor .. 그것은 작동합니다 –

+0

@ harishchintam 당신을 환영합니다 –