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

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

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

一般android不支持这两个命令

(3) 调用Android的API: WifiManager

权限:

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

代码:

?
12345 WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);WifiInfo info = wifi.getConnectionInfo();returninfo.getMacAddress();

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

(4) 调用Linux的busybox

?
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 /* ****************************************************************** 子函数:获得本地MAC地址***************************************************************** */publicString 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:67if(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(inti = 0;i<tmp.length;++i){result +=tmp[i];}}Log.i("test",result+" result.length: "+result.length()); }returnresult;} publicString callCmd(String cmd,String filter) { String result = ""; String line = ""; try{Process proc = Runtime.getRuntime().exec(cmd);InputStreamReader is = newInputStreamReader(proc.getInputStream()); BufferedReader br = newBufferedReader (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(); } returnresult; }

这个需要设备支持busybox工具

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

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

更多相关文章

  1. Android 自定义View及其在布局文件中的使用示例(三):结合Android
  2. Android 4.4 SD卡文件读写变化
  3. Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式
  4. android命令行播放mp3
  5. Android教程之Android SDK1.5模拟器使用命令
  6. Android学习之路(一)之 Android文件简单介绍
  7. Android 上如何移植live555生成库文件
  8. Android NDK 使用第一步,编译c文件,声明jni并调用。

随机推荐

  1. Android(4.X)学习笔记
  2. Android(安卓)向用户申请权限-适配的Perm
  3. 转:Android AsyncTask
  4. Android通用框架设计与完整电商App开发
  5. Android rest接口
  6. Android 所有版本区别总结
  7. Android 系统中WatchDog 日志分析
  8. android 应用程序数据共享shareuserid篇+
  9. Android系统编译环境变量的设置
  10. Android设置个性化Dialog小图标的方法