Qt 中使用Java代碼獲取安卓設備的MAC地址(安卓9.0)


public String GetDeviceMAC() {
       String strMacAddr = null;
       try {
           // 獲得IpD地址
           InetAddress ip = getLocalInetAddress();
           byte[] b = NetworkInterface.getByInetAddress(ip)
                   .getHardwareAddress();
           StringBuffer buffer = new StringBuffer();
           for (int i = 0; i < b.length; i++) {
               if (i != 0) {
                   buffer.append(':');
               }
               String str = Integer.toHexString(b[i] & 0xFF);
               buffer.append(str.length() == 1 ? 0 + str : str);
           }
           strMacAddr = buffer.toString().toUpperCase();
       } catch (Exception e) {
 
        
       }
       Log.d("MAC2" , "getCPUSerial the result is = " );
       return strMacAddr;
   }
 
        
private  InetAddress getLocalInetAddress() {
       InetAddress ip = null;
       try {
           // 列舉
           Enumeration<NetworkInterface> en_netInterface = NetworkInterface
                   .getNetworkInterfaces();
           while (en_netInterface.hasMoreElements()) {// 是否還有元素
               NetworkInterface ni = (NetworkInterface) en_netInterface
                       .nextElement();// 得到下一個元素
               Enumeration<InetAddress> en_ip = ni.getInetAddresses();// 得到一個ip地址的列舉
               while (en_ip.hasMoreElements()) {
                   ip = en_ip.nextElement();
                   if (!ip.isLoopbackAddress()
                           && ip.getHostAddress().indexOf(":") == -1)
                       break;
                   else
                       ip = null;
               }
 
        
               if (ip != null) {
                   break;
               }
           }
       } catch (SocketException e) {
 
        
           e.printStackTrace();
       }
       return ip;
   }
 
        
private  String getLocalIpAddress() {
        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface
                    .getNetworkInterfaces(); en.hasMoreElements(); ) {
                NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf
                        .getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()) {
                        return inetAddress.getHostAddress().toString();
                    }
                }
            }
        } catch (SocketException ex) {
            ex.printStackTrace();
        }
        return null;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM