新增:网络状态监控通知增加IPv6获取 #321

This commit is contained in:
pppscn 2023-07-22 14:20:18 +08:00
parent 2bee1dad87
commit 83bca041c9
2 changed files with 49 additions and 6 deletions

View File

@ -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())

View File

@ -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<String> {
val ipAddresses = mutableListOf<String>()
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 {