HarmonyOS 鸿蒙Next 获取手机ip的方法

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 获取手机ip的方法

有没有大佬能提供一个获取手机ip的方法

2 回复
import connection from '@ohos.net.connection';
import hilog from '@ohos.hilog';
import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
const TAG: string = 'testTag'
/**
 * 获取设备ip
 */
async function getLocalIp() {
  try {
    hilog.info(0x00000, TAG, '判断是否存在激活的网络连接');
    let hasNet = connection.hasDefaultNetSync()
    if (hasNet) {
      hilog.info(0x00000, TAG, '存在默认激活的网络');
    } else {
      hilog.error(0x00000, TAG, '不存在激活的网络');
      return
    }
    let handleResult = await connection.getDefaultNet()
    if (handleResult) {
      let connectionProperties = await connection.getConnectionProperties(handleResult)
      if (connectionProperties && connectionProperties.linkAddresses) {
        connectionProperties.linkAddresses.forEach((address: connection.LinkAddress, index: number) => {
          hilog.info(0x00000, TAG, '索引:' + index + ',值:' + JSON.stringify(address));
        })
      }
    }
  } catch (e) {
    hilog.error(0x00000, TAG, `获取网络信息出现异常,异常信息 %{public}s`, JSON.stringify(e) ?? '');
  }
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct getLocalIpTest {
  [@State](/user/State) message: string = 'Hello World';
  context = getContext(this) as common.UIAbilityContext;
  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(()=>{
          getLocalIp()
        })
    }
    .height('100%')
    .width('100%')
  }
}
配置一下如下权限
  {
        'name': "ohos.permission.INTERNET"
      },
  {
        'name': "ohos.permission.GET_NETWORK_INFO"
      }, 

作为IT专家,对于HarmonyOS鸿蒙Next获取手机IP地址的方法,以下是一些专业解答:

在HarmonyOS中,获取手机IP地址通常涉及访问系统的网络接口信息。若设备已连接Wi-Fi,可直接在设置中的“关于手机”或“状态信息”里查看IP地址。

然而,若设备未连接Wi-Fi而是使用移动数据网络,情况则有所不同。移动数据网络通常不会为设备分配一个静态或私有的IPv4地址,而是使用NAT或CGNAT等技术共享公共IP地址。因此,直接获取传统的IPv4地址可能不太直接或可行。

在这种情况下,可考虑以下方法:

  • 尝试访问系统的网络接口信息,查看是否有移动网络分配的私有IPv4地址(非标准做法)。
  • 检查设备是否配置了IPv6地址,并尝试获取。
  • 使用第三方库或服务,但可能涉及网络请求或特定的服务API。

请注意,获取IP地址的方法可能因设备型号、系统版本等因素而有所不同。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部