Android アプリ

【Android】IPアドレス取得

2019年5月1日

Android開発でIPアドレス取得するには
「NetworkInterface.getNetworkInterfaces()」を使えばOK

AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />

マニフェストでINTERNETを追記しないと「NetworkInterface.getNetworkInterfaces()」がすべてnullとなってしまうので注意

IPAddress.kt

/**
 * IPアドレス取得メソッド
 */
class IPAddress {
    fun getIPAddress():String{
        var text = "";
        try{
            val interfaces = NetworkInterface.getNetworkInterfaces();
            if(interfaces == null){
                text += "IPアドレス取得できませんでした。" + System.lineSeparator()
                return text;
            }
            while(interfaces.hasMoreElements()){
                val network = interfaces.nextElement()
                val addresses = network.inetAddresses

                while(addresses.hasMoreElements()){
                    val address = addresses.nextElement()
                    text += address.hostAddress + System.lineSeparator()

                }
            }
        }catch (e : SocketException){
            e.printStackTrace()
        }
        return text;
    }
}

INTERNETが許可されない場合、「NetworkInterface.getNetworkInterfaces()」がnullとなってしまうので、その場合の処理を追加したほうがよさげ。
上記はIPアドレスはIPv4とIPv6が入り乱れて取得するので別途振り分け処理は必要かも
ループバックアドレス、近傍ローカルIPアドレス(IPv6)も同様に取得する。


19行目は「address.toString()」で取得も可能だが、なぜかエスケープ文字がも入ってしまうため、「address.hostAddress」のほうが無難かも

参考

Android Developers - InetAddress

-Android, アプリ
-, ,