diff --git a/app/src/main/java/com/idormy/sms/forwarder/service/NetworkStateService.kt b/app/src/main/java/com/idormy/sms/forwarder/service/NetworkStateService.kt index f51dac83..4c0709cf 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/service/NetworkStateService.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/service/NetworkStateService.kt @@ -15,6 +15,7 @@ import androidx.work.workDataOf import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.entity.MsgInfo +import com.idormy.sms.forwarder.utils.CommonUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.Worker import com.idormy.sms.forwarder.workers.SendWorker @@ -91,13 +92,18 @@ class NetworkStateService : Service() { msg.append(getString(R.string.operator_name)).append(": ").append(operatorName).append("\n") } - val inetAddress = NetworkUtils.getLocalInetAddress() - var hostAddress: String = inetAddress?.hostAddress?.toString() ?: "127.0.0.1" - msg.append(getString(R.string.host_address)).append(": ").append(hostAddress).append("\n") - + //获取IP地址 + val ipList = CommonUtils.getIPAddresses() if (ServiceUtils.isServiceRunning("com.idormy.sms.forwarder.service.HttpService")) { - hostAddress = if (hostAddress.indexOf(':', 0, false) > 0) "[${hostAddress}]" else hostAddress - msg.append(getString(R.string.http_server)).append(": ").append("http://${hostAddress}:5000") + ipList.forEach() { + msg.append(getString(R.string.host_address)).append(": ").append(it).append("\n") + val hostAddress = if (it.indexOf(':', 0, false) > 0) "[${CommonUtils.removeInterfaceFromIP(it)}]" else it + msg.append(getString(R.string.http_server)).append(": ").append("http://${hostAddress}:5000").append("\n") + } + } else { + ipList.forEach() { + msg.append(getString(R.string.host_address)).append(": ").append(it).append("\n") + } } sendMessage(context, msg.toString()) diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt index c484afa6..65043232 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt @@ -35,6 +35,9 @@ import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog.SingleButton import com.xuexiang.xui.widget.imageview.preview.PreviewBuilder import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.common.StringUtils +import java.net.Inet4Address +import java.net.Inet6Address +import java.net.NetworkInterface import java.util.regex.Pattern /** @@ -277,6 +280,40 @@ class CommonUtils private constructor() { ) } + //获取本机IP地址 + fun getIPAddresses(): List { + val ipAddresses = mutableListOf() + + try { + val networkInterfaces = NetworkInterface.getNetworkInterfaces() + + while (networkInterfaces.hasMoreElements()) { + val networkInterface = networkInterfaces.nextElement() + val addresses = networkInterface.inetAddresses + + while (addresses.hasMoreElements()) { + val address = addresses.nextElement() + + if (address is Inet4Address || address is Inet6Address) { + ipAddresses.add(address.hostAddress) + } + } + } + } catch (e: Exception) { + e.printStackTrace() + } + + return ipAddresses + } + + fun removeInterfaceFromIP(ipAddress: String): String { + val index = ipAddress.indexOf("%") + return if (index != -1) { + ipAddress.substring(0, index) + } else { + ipAddress + } + } } init {