1. 程式人生 > >Android手機AP模式下本機IP

Android手機AP模式下本機IP

至今為止Android沒有官方IP獲取AP模式下的IP的介面,而且由於Android的開放性,各個廠商都發揮自己的想象力修改framework。所以預設的IP並不一定就是AP模式下的IP,要獲取真實的IP就要另外想辦法了。

先檢查Wifi是否處於AP模式,然後執行下述程式碼:

    private String getIP() {
        // default IP for most device's softAp
        String hotspotIp = "192.168.43.1";
        try {
            Enumeration<NetworkInterface> faces = NetworkInterface.getNetworkInterfaces();
            while
(faces.hasMoreElements()) { NetworkInterface iface = faces.nextElement(); if (iface.isUp() && !iface.isLoopback() && !iface.isPointToPoint()) { List<InterfaceAddress> listAddress = iface.getInterfaceAddresses(); for
(InterfaceAddress address: listAddress) { String ip = address.getAddress().toString(); Log.d("Stone", iface.getName() + " ip : " + ip); if (ip.startsWith("/192.168")) { hotspotIp = ip; } } } } } catch
(SocketException e) { e.printStackTrace(); } return hotspotIp.replace("/", ""); }

檢視Android framework的程式碼可發現,192.168.43.1是AP模式下的預設IP,但是也不有部分不合流的廠商會修改它。沒問題,當AP模式開啟之後我們列舉所有IP,並且匹配192.168開頭的IP作為結果。如果有廠商喪心病狂到將IP改為非192.168段的,還有一個方法是讀取系統property wifi.interface的值,假如是wlan0,那麼wlan0的IP就是結果。