HarmonyOS 鸿蒙Next: 鸿蒙应用已在module.json中添加了"name": "ohos.permission.INTERNET",但在真机运行时仍然显示没有该权限

HarmonyOS 鸿蒙Next: 鸿蒙应用已在module.json中添加了"name": “ohos.permission.INTERNET”,但在真机运行时仍然显示没有该权限 鸿蒙应用已经在module.json5添加了"name": "ohos.permission.INTERNET"权限在真机运行时还是显示没有权限,是不是说还需要写个用户权限弹窗?

"requestPermissions": [
  {
    "name": "ohos.permission.INTERNET",
  }, 
  {
    "name": "ohos.permission.FILE_ACCESS_PERSIST"
  },
  {
    "name": "ohos.permission.READ_MEDIA",
    "reason": "$string:READ_MEDIA_reason",
    "usedScene": {
      "abilities": [
        "EntryAbility"
      ],
      "when": "inuse"
    }
  },
  {
    "name": "ohos.permission.WRITE_MEDIA",
    "reason": "$string:WRITE_MEDIA_reason",
    "usedScene": {
      "abilities": [
        "EntryAbility"
      ],
      "when": "inuse"
    }
  }],

数据请求方法

export function getVodData(url: string): Promise<string> {
  return new Promise((resolve, reject) => {
    console.log("kaishi请求数据")//1

    let httpRequest = http.createHttp();
    let options: http.HttpRequestOptions = {
      method: http.RequestMethod.GET,
      expectDataType: http.HttpDataType.STRING,
    };
    httpRequest.request(urlRoot+url, options)
      .then((response) => {
        const vodStr = response.result.toString();
        createVodDataFile("/vodDB.db", vodStr);

        console.log("请求成功请求数据")//2
        resolve(vodStr);
      })
      .catch((err: Error) => {
        console.log("err:" + err);
        console.log("vodData请求数据shibai")//3
        reject(err);
      })
      .finally(() => {
        httpRequest.destroy();
      });
  });
}

运行结果还是报错

02-11 17:28:28.437   23459-23459   A03D00/top.gua...niMovie/JSAPP  pid-23459             I     kaishi请求数据
02-11 17:28:31.815   23459-23459   A03D00/top.gua...niMovie/JSAPP  top.guadou.miniMovie  I     err:Error: Permission denied
02-11 17:28:31.815   23459-23459   A03D00/top.gua...niMovie/JSAPP  top.guadou.miniMovie  I     vodData请求数据shibai
02-11 17:28:31.815   23459-23459   A03D00/top.gua...niMovie/JSAPP  top.guadou.miniMovie  I     请求数据err:Error: Permission denied

为什么呢


更多关于HarmonyOS 鸿蒙Next: 鸿蒙应用已在module.json中添加了"name": "ohos.permission.INTERNET",但在真机运行时仍然显示没有该权限的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

仅在module.json5中添加"name": "ohos.permission.INTERNET"权限后,使用如下Demo测试,没有出现权限拒绝报错;其中不包含createVodDataFile,麻烦检查下createVodDataFile方法中是否包含其他需要权限的操作,可以使用debug调试方式查看下:

debug调试方式:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-debug-arkts-debug-V5

测试Demo:

import { http } from '@kit.NetworkKit';
import { ToastUtil } from '@pura/harmony-utils';

export function getVodData(url: string): Promise<string> {
  return new Promise((resolve, reject) => {
    console.log("kaishi请求数据")//1

    let httpRequest = http.createHttp();
    let options: http.HttpRequestOptions = {
      method: http.RequestMethod.GET,
      expectDataType: http.HttpDataType.STRING,
    };
    httpRequest.request(url, options)
      .then((response) => {
        const vodStr = response.result.toString();
        // createVodDataFile("/vodDB.db", vodStr);
        ToastUtil.showToast("调用成功")
        resolve(vodStr);
      })
      .catch((err: Error) => {
        ToastUtil.showToast("调用失败")
        reject(err);
      })
      .finally(() => {
        httpRequest.destroy();
      });
  });
}

@Entry
@Component
struct HttpRequestDemo {
  @State message: string = 'Hello World';

  build() {
    RelativeContainer() {
      Button(this.message)
        .id('HttpRequestDemoHelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(() => {
          getVodData("https://www.baidu.com/")
        })
    }
    .height('100%')
    .width('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next: 鸿蒙应用已在module.json中添加了"name": "ohos.permission.INTERNET",但在真机运行时仍然显示没有该权限的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


ohos.permission.INTERNET 网络权限不需要弹框授权。

在HarmonyOS中,即使你在module.json文件中添加了"name": "ohos.permission.INTERNET",应用在真机运行时仍可能显示没有该权限。这可能是由于以下原因:

  1. 权限申请未在代码中动态请求:从HarmonyOS 3.0开始,部分敏感权限不仅需要在module.json中声明,还需要在代码中动态请求。例如,ohos.permission.INTERNET属于普通权限,通常只需要在配置文件中声明即可,但某些真机设备或系统版本可能要求动态请求。

  2. 配置文件中权限声明位置错误:确保权限声明在module.json"reqPermissions"字段中,且格式正确。例如:

    {
      "module": {
        "reqPermissions": [
          {
            "name": "ohos.permission.INTERNET"
          }
        ]
      }
    }
    
  3. 真机设备系统版本或配置文件不一致:某些真机设备可能运行的是较旧的HarmonyOS版本,或者配置文件与开发环境不一致,导致权限未正确应用。

  4. 应用签名问题:如果应用未正确签名,可能会导致权限无法正常生效。确保应用已使用正确的签名文件进行签名。

  5. 设备权限管理设置:有些设备可能在系统设置中限制了应用的网络权限,检查设备的应用权限管理设置,确保已授予应用网络访问权限。

  6. 系统缓存问题:有时系统缓存可能导致权限未及时更新,尝试清理应用缓存或重启设备。

  7. SDK或IDE版本问题:确保使用的DevEco Studio和HarmonyOS SDK版本与目标设备的系统版本兼容,避免因版本不一致导致的权限问题。

如果以上检查均无问题,但仍无法解决,建议进一步排查日志或确认设备具体配置。

回到顶部