Android开发中获取移动设备Mac地址的两种方法

时间:2024-03-08 08:47:14

        Android开发中获取移动设备Mac地址的两种方法:

        Runtime.getRuntime().exec("cat /sys/class/net/wlan0/address "); 这种方法没有普遍性。 他是读系统文件信息 但是一些定制系统的目录并不一样。 例如三星的目录为"cat /sys/class/net/eth0/address " 

 

       // wifi 关闭之后就只能获取null了

String getMac() {
        String macSerial = null;
        String str = "";
        try {
                Process pp = Runtime.getRuntime().exec(
                                "cat /sys/class/net/wlan0/address ");
                InputStreamReader ir = new InputStreamReader(pp.getInputStream());
                LineNumberReader input = new LineNumberReader(ir);


                for (; null != str;) {
                        str = input.readLine();
                        if (str != null) {
                                macSerial = str.trim();// 去空格
                                break;
                        }
                }
        } catch (IOException ex) {
                // 赋予默认值
                ex.printStackTrace();
        }
        return macSerial;
}

 

 

       用下面的方法获取Mac,需要在AndroidManifest.xml文件中添加权限:

      

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

 

 // wifi关闭之后还可以获取到mac地址

public String getLocalMacAddress() {
  WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
  WifiInfo info = wifi.getConnectionInfo();
  return info.getMacAddress();
}