Android携帯電話APモードにて本体IP

2117 ワード

これまで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 faces = NetworkInterface.getNetworkInterfaces();
            while (faces.hasMoreElements()) {
                NetworkInterface iface = faces.nextElement();
                if (iface.isUp() && !iface.isLoopback() && !iface.isPointToPoint()) {
                    List 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の値は,wlan 0であればwlan 0のIPが結果である.