【Android】获取Mac地址【1】

(1) 调用android 的API: NetworkInterface. getHardwareAddress ()

该API的level为9,只有android 2.3以上才有该接口

(2) 调用java 的方法: nbtstat/arp

一般android不支持这两个命令

(3) 调用Android的API: WifiManager

权限:

1 "android.permission.ACCESS_WIFI_STATE" >

代码:

1 2 3 4 5 WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);   WifiInfo info = wifi.getConnectionInfo();   return info.getMacAddress();

这个是设备开通Wifi连接,获取到网卡的MAC地址

(4) 调用Linux的busybox

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 /*    *****************************************************************    *                       子函数:获得本地MAC地址    *****************************************************************                          */      public String getMacAddress(){         String result = "" ;           String Mac = "" ;       result = callCmd( "busybox ifconfig" , "HWaddr" );              //如果返回的result == null,则说明网络不可取       if (result== null ){           return "网络出错,请检查网络" ;       }              //对该行数据进行解析       //例如:eth0      Link encap:Ethernet  HWaddr 00:16:E8:3E:DF:67       if (result.length()> 0 && result.contains( "HWaddr" )== true ){           Mac = result.substring(result.indexOf( "HWaddr" )+ 6 , result.length()- 1 );           Log.i( "test" , "Mac:" +Mac+ " Mac.length: " +Mac.length());                      if (Mac.length()> 1 ){               Mac = Mac.replaceAll( " " , "" );               result = "" ;               String[] tmp = Mac.split( ":" );               for ( int i = 0 ;i                   result +=tmp[i];               }           }           Log.i( "test" ,result+ " result.length: " +result.length());                  }       return result;   }          public String callCmd(String cmd,String filter) {         String result = "" ;         String line = "" ;         try {           Process proc = Runtime.getRuntime().exec(cmd);           InputStreamReader is = new InputStreamReader(proc.getInputStream());             BufferedReader br = new BufferedReader (is);                        //执行命令cmd,只取结果中含有filter的这一行           while ((line = br.readLine ()) != null && line.contains(filter)== false ) {                 //result += line;               Log.i( "test" , "line: " +line);           }                      result = line;           Log.i( "test" , "result: " +result);       }         catch (Exception e) {             e.printStackTrace();         }         return result;     }

 

这个需要设备支持busybox工具

(5)查询记录了MAC地址的文件“/proc/net/arp”

需要有这个文件,并且记录了相应的内容

更多相关文章

  1. 详解 Android(安卓)的 Activity 组件
  2. [Android(安卓)与 js 简单互调
  3. Unity与Android(安卓)Studio✨之间那些不清不楚的小秘密✨(Androi
  4. Unity3D 调用Android的提供的接口
  5. 【安全】Android(安卓)O 中的 Seccomp 过滤器
  6. Unity3D 调用Android的提供的接口
  7. android:id="@+id/title"、android:id="@android:id/title"、and
  8. Android工作笔记:Android路径大全
  9. android android API Level

随机推荐

  1. Android攻城狮面试指南
  2. Android应用程序键盘(Keyboard)消息处理机
  3. 试玩Android(一)
  4. Android随笔之——Android ADB详解
  5. Android Native C/C++简介
  6. Android Dialog对话框的七种形式的使用
  7. Android中的布局方式(二)
  8. Android在TQ2440开发板上的移植
  9. android声音播放
  10. Android用Application设置全局变量以及使