kotlin 获取ip
时间: 2023-11-24 11:07:52 浏览: 140
获取ip地址
在Kotlin中,您可以使用不同的方法来获取设备的IP地址。其中一种方法是使用WifiManager类和Formatter类来获取本地IP地址。您可以按照以下步骤执行此操作:
```kotlin
import android.content.Context
import android.net.wifi.WifiManager
import android.text.format.Formatter
fun getIpAddress(context: Context): String {
val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
val ip = Formatter.formatIpAddress(wifiManager.connectionInfo.ipAddress)
return ip
}
```
另一种方法是使用NetworkInterface类和InetAddress类来获取本地IP地址。您可以按照以下步骤执行此操作:
```kotlin
import java.net.InetAddress
import java.net.NetworkInterface
fun getIpAddress(): String {
var ip = ""
try {
val enumNetworkInterfaces = NetworkInterface.getNetworkInterfaces()
while (enumNetworkInterfaces.hasMoreElements()) {
val networkInterface = enumNetworkInterfaces.nextElement()
val enumInetAddress = networkInterface.inetAddresses
while (enumInetAddress.hasMoreElements()) {
val inetAddress = enumInetAddress.nextElement()
if (inetAddress.isSiteLocalAddress) {
ip = inetAddress.hostAddress
}
}
}
} catch (e: Exception) {
e.printStackTrace()
ip = "Something Wrong! " + e.toString() + "\n"
}
return ip
}
```
请注意,以上方法仅返回设备的本地IP地址。如果您想获取公共IP地址,您可能需要使用外部服务,例如https://api.ipify.org,并将公共IP地址作为字符串获取。以下是一个示例方法:
```kotlin
suspend fun getPublicIP(): String {
val response: HttpResponse = client.get("https://api.ipify.org")
var publicIP = try {
response.bodyAsText()
} catch (e: Exception) {
e.printStackTrace()
e.toString()
}
return publicIP
}
```
阅读全文