鸿蒙NEXT中使用三方Ping工具遇到的权限问题及解决方案

【三方Ping工具简介】

三方Ping工具是用于测试网络连通性的常用工具之一。它可以通过发送ICMP Echo请求到目标主机,并接收响应来测量延迟时间和丢包率。对于鸿蒙NEXT应用而言,我们选择了来自OpenHarmony Package Manager (OHPM)的@ohos-rs/ping库,该库支持API 11、API 12和API 13等多个版本。

【权限问题描述】

在实际测试中,我们发现当手机系统为4.1时,尽管支持API 11,但在调用pingAsync函数时会因为“没有权限”而失败;而在5.0系统中则可以正常工作。这表明问题可能不是由API版本引起,而是与系统的权限处理机制有关。

【三方库使用】

1、首先需要导包 ohpm install @ohos-rs/ping

2、网络权限配置,我们需要在module.json5文件中声明ohos.permission.INTERNET权限:

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}

3、代码测试

import { pingAsync } from '@ohos-rs/ping';

@Entry
@Component
struct Page04 {
  build() {
    Column({ space: 20 }) {
      Button('ping 网址测试').onClick(async () => {
        try {
          console.info(`开始ping www.baidu.com`);
          const data = await pingAsync("www.baidu.com", {
            count: 1,
            timeout: 1,
            interval: 1,
            ipVersion: 'auto',
          });
          console.log(`连接成功ping:${JSON.stringify(data)}`);
          this.getUIContext().showAlertDialog({
            title: '连接成功',
            message: JSON.stringify(data),
          });
        } catch (e) {
          console.error('连接失败ping', e);
          this.getUIContext().showAlertDialog({
            title: '连接失败',
            message: `Error: ${e.message}, Code: ${e.code}`,
          });
        }
      });

      Button('ping IP测试').onClick(async () => {
        try {
          console.info(`开始ping 119.75.217.109`);
          const data = await pingAsync("119.75.217.109", {
            count: 1,
            timeout: 1,
            interval: 1,
            ipVersion: 'auto',
          });
          console.log(`连接成功ping:${JSON.stringify(data)}`);
          this.getUIContext().showAlertDialog({
            title: '连接成功',
            message: JSON.stringify(data),
          });
        } catch (e) {
          console.error('连接失败ping', e);
          this.getUIContext().showAlertDialog({
            title: '连接失败',
            message: `Error: ${e.message}, Code: ${e.code}`,
          });
        }
      });

    }
    .width('100%')
    .height('100%');
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值