1.1、应用权限
??ATM (AccessTokenManager) 是HarmonyOS上基于AccessToken构建的统一的应用权限管理能力
应用权限保护的对象可以分为数据和功能:
- 数据包含了个人数据(如照片、通讯录、日历、位置等)、设备数据(如设备标识、相机、麦克风等)、应用数据。
- 功能则包括了设备功能(如打电话、发短信、联网等)、应用功能(如弹出悬浮框、创建快捷方式等)等。
根据授权方式的不同,权限类型可分为system_grant(系统授权)和user_grant(用户授权)
- 配置文件权限声明
{
"module" : {
// ...
"requestPermissions":[
{
"name" : "ohos.permission.INTERNET"
}
]
}
}
- 向用户申请授权
{
"module" : {
// ...
"requestPermissions":[
{
"name" : "ohos.permission.ANSWER_CALL" //允许应用接听来电
}
]
}
}
1.2、HTTP请求
使用 @ohos.net.http 模块发请求
// 申请网络权限
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
]
import http from '@ohos.net.http'
import request from '@ohos.request'
@Entry
@Component
struct HttpCase {
aboutToAppear() { // 页面初始化之后会执行
this.getData()
}
async getData() {
// 第一种取promise结果的方法
try {
const req = http.createHttp()
// await会强制等待后面的promise进行resolve,只有执行成功才会走下一行代码,要求父级函数必须标记为async
const res = await req.request("https://zhoushugang.gitee.io/fe2022/takeaway.json")
// 执行成功的代码 async await让我们用同步的方式写异步, 必须配套使用,要求父级函数必须标记为async
// async标记后面的函数是一个异步函数,不会阻塞主线程,getData不会阻塞主线程的执行
AlertDialog.show({message:res.result as string })
} catch(e) { // 处理失败的代码
}
// 第二种取promise结果的方法
// request返回promise,通过then拿到结果
// const req = http.createHttp()
// req.request("https://zhoushugang.gitee.io/fe2022/takeaway.json")
// .then((result) => {
// AlertDialog.show({message:result.result as string }) // as string代表类型断言
// })
// .catch((e)=>{
// })
}
build() {
Row() {
Column() {
}
.width('100%')
}
.height('100%')
}
}