Android Studio的代码笔记 |
您所在的位置:网站首页 › 笔记mac地址 › Android Studio的代码笔记 |
关于获取设备SN序列号、MAC地址、IP地址的学习代码
SN序列号获取SN序列号
MAC地址获取MAC地址
IP、wlanIP、wlanMAC、网络、ping获取以太网的IP地址获取设备wlan的IP地址获取wlan的MAC地址判断当前网络是否可以用判断ping一个xx地址是否能ping通
命令 busybox ifconfig 和 命令 netcfg总结
SN序列号
SN码是Serial Number的缩写,有时也叫SerialNo,也就是产品序列号,产品序列是为了验证“产品的合法身份”而引入的一个概念,它是用来保障用户的正版权益,享受合法服务的;一套正版的产品只对应一组产品序列号。SN码别称:机器码、认证码、注册申请码等。 获取SN序列号 /** * @LXH 获取设备的SN序列号 * @return SN序列号 */ public String get_SN() { String serial_n = ""; try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {//9.0+ serial_n = Build.getSerial(); } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {//8.0+ serial_n = Build.SERIAL;//android.os.Build.SERIAL } else {//8.0- Class c = Class.forName("android.os.SystemProperties"); Method get = c.getMethod("get", String.class); serial_n = (String) get.invoke(c, "ro.serialno"); } } catch (Exception e) { e.printStackTrace(); Log.e("LXH", "读取设备序列号异常:" + e.toString()); } Log.i("LXH","设备的SN序列号:"+serial_n); return serial_n; }适用各个版本,有提示添加权限如下,但是我没加这个权限时也可以运行成功 MAC地址MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 [1] 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。 MAC地址是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。 获取MAC地址 /** * @LXH 获取设备的MAC地址 * MAC地址=局域网地址=MAC位址=以太网地址=或物理地址 * @return MAC地址 */ public String get_MAC() { String ethernet_mac = null; BufferedReader bufferedReader_mac = null; FileReader fileReader_mac = null; try { fileReader_mac = new FileReader("sys/class/net/eth0/address"); bufferedReader_mac = new BufferedReader(fileReader_mac); ethernet_mac = bufferedReader_mac.readLine(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (bufferedReader_mac != null) bufferedReader_mac.close(); if (fileReader_mac != null) fileReader_mac.close(); } catch (IOException e) { e.printStackTrace(); Log.e("LXH", "读取设备MAC地址异常:" + e.toString()); } } Log.i("LXH","设备的MAC地址:"+ethernet_mac); return ethernet_mac; }获取的MAC地址就是有线网络的地址,即物理地址 IP、wlanIP、wlanMAC、网络、ping因为要访问网络,所以要添加网络权限,没有添加权限会得到null 获取以太网的IP地址 /** * @LXH 获取设备以太网的IP地址 * @return 以太网的IP地址 */ public String get_ethernet_IP() { String ethernet_IP = null; try { Enumeration nis = NetworkInterface.getNetworkInterfaces(); while (nis.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) nis.nextElement(); Enumeration ias = ni.getInetAddresses(); while (ias.hasMoreElements()) { InetAddress ia = ias.nextElement(); if (ia instanceof Inet6Address) { continue; } String hostAddress = ia.getHostAddress(); if (!"127.0.0.1".equals(hostAddress)) { ethernet_IP = hostAddress; break; } } } } catch (SocketException e) { e.printStackTrace(); } Log.i("LXH","设备以太网的IP地址:"+ethernet_IP); return ethernet_IP; } 获取设备wlan的IP地址 /** * @LXH 获取设备wlan的IP地址 * @return wlan的IP地址 */ public String get_wlan_IP() { String wlan_IP=""; List interfaces = null; try { interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface networkInterface : interfaces) { if (networkInterface != null && TextUtils.isEmpty(networkInterface.getName()) == false) { if ("wlan0".equalsIgnoreCase(networkInterface.getName())) { Enumeration enumIpAddr = networkInterface.getInetAddresses(); while (enumIpAddr.hasMoreElements()) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) { wlan_IP=inetAddress.getHostAddress(); Log.i("LXH","设备wlan的IP地址:"+wlan_IP); return wlan_IP; } } } } } } catch (SocketException e) { e.printStackTrace(); } return wlan_IP; } 获取wlan的MAC地址 /** * @LXH 获取wlan的MAC地址 * @return wlan0的mac地址 */ public String get_wlan_MAC() { String wlan_MAC=""; List interfaces = null; try { interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface networkInterface : interfaces) { if (networkInterface != null && TextUtils.isEmpty(networkInterface.getName()) == false) { if ("wlan0".equalsIgnoreCase(networkInterface.getName())) { byte[] macBytes = networkInterface.getHardwareAddress(); if (macBytes != null && macBytes.length > 0) { StringBuilder str = new StringBuilder(); for (byte b : macBytes) { str.append(String.format("%02X:", b)); } if (str.length() > 0) { str.deleteCharAt(str.length() - 1); } wlan_MAC=str.toString(); Log.i("LXH","设备wlan的MAC地址:"+wlan_MAC); return wlan_MAC; } } } } } catch (SocketException e) { e.printStackTrace(); } return wlan_MAC; }wlan的mac地址需要添加如下权限,否则会报错。 判断当前网络是否可以用 /** * @LXH 判断当前网络是否可以用 * @return boolean */ public boolean is_Network() { boolean is_network = false; ConnectivityManager manager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); if (manager == null) { return false; } NetworkInfo networkInfo = manager.getActiveNetworkInfo(); is_network= networkInfo != null && networkInfo.isConnected(); Log.i("LXH","当前网络是否可以用:"+is_network); return is_network; }网络可用不代表能上网,但是可以与同网段的通信 判断ping一个xx地址是否能ping通 /** * @LXH 判断ping一个xx地址是否能ping通 * @param ip * @return boolean */ public boolean is_PingIP(String ip) { boolean pingIP = false; try {//-c 1是指ping的次数为1次,-w 3是指超时时间为3s Process process = Runtime.getRuntime().exec("ping -c 1 -w 3 " + ip); int status = process.waitFor(); if (status == 0) {//status为0表示ping成功 pingIP=true; Log.i("LXH","ping "+ip+" 是否成功:"+pingIP); return pingIP; } }catch (InterruptedException | IOException e) { e.printStackTrace(); } Log.i("LXH","ping "+ip+" 是否成功:"+pingIP); return pingIP; }运行日志 在终端下输入adb shell进入android的终端 busybox ifconfig显示或配置网络设备(网络接口卡)的命令,在android中的ifconfig
还是得多看大佬的代码,逻辑和习惯得改 欢迎指错,一起学习鸭 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |