Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
b733f452
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
b733f452
编写于
5月 22, 2023
作者:
O
openharmony_ci
提交者:
Gitee
5月 22, 2023
浏览文件
操作
浏览文件
下载
差异文件
!18439 FAQ更新+website修改
Merge pull request !18439 from zengyawen/master
上级
b7d17c84
c02b6b63
变更
14
展开全部
隐藏空白更改
内联
并排
Showing
14 changed file
with
1519 addition
and
659 deletion
+1519
-659
zh-cn/application-dev/connectivity/Readme-CN.md
zh-cn/application-dev/connectivity/Readme-CN.md
+0
-1
zh-cn/application-dev/connectivity/net-policy-management.md
zh-cn/application-dev/connectivity/net-policy-management.md
+0
-402
zh-cn/application-dev/faqs/Readme-CN.md
zh-cn/application-dev/faqs/Readme-CN.md
+7
-2
zh-cn/application-dev/faqs/faqs-arkui-animation-interactive-event.md
...cation-dev/faqs/faqs-arkui-animation-interactive-event.md
+273
-0
zh-cn/application-dev/faqs/faqs-arkui-arkts.md
zh-cn/application-dev/faqs/faqs-arkui-arkts.md
+1
-1
zh-cn/application-dev/faqs/faqs-arkui-component.md
zh-cn/application-dev/faqs/faqs-arkui-component.md
+715
-0
zh-cn/application-dev/faqs/faqs-arkui-js.md
zh-cn/application-dev/faqs/faqs-arkui-js.md
+37
-0
zh-cn/application-dev/faqs/faqs-arkui-layout.md
zh-cn/application-dev/faqs/faqs-arkui-layout.md
+44
-0
zh-cn/application-dev/faqs/faqs-arkui-route-nav.md
zh-cn/application-dev/faqs/faqs-arkui-route-nav.md
+25
-0
zh-cn/application-dev/napi/Readme-CN.md
zh-cn/application-dev/napi/Readme-CN.md
+1
-65
zh-cn/application-dev/napi/introduction.md
zh-cn/application-dev/napi/introduction.md
+52
-0
zh-cn/application-dev/quick-start/Readme-CN.md
zh-cn/application-dev/quick-start/Readme-CN.md
+1
-1
zh-cn/application-dev/reference/apis/js-apis-logs.md
zh-cn/application-dev/reference/apis/js-apis-logs.md
+0
-0
zh-cn/application-dev/website.md
zh-cn/application-dev/website.md
+363
-187
未找到文件。
zh-cn/application-dev/connectivity/Readme-CN.md
浏览文件 @
b733f452
...
...
@@ -5,7 +5,6 @@
-
[
HTTP数据请求
](
http-request.md
)
-
[
WebSocket连接
](
websocket-connection.md
)
-
[
Socket连接
](
socket-connection.md
)
-
[
策略管理
](
net-policy-management.md
)
-
[
网络共享
](
net-sharing.md
)
-
[
以太网连接
](
net-ethernet.md
)
-
[
网络连接管理
](
net-connection-manager.md
)
...
...
zh-cn/application-dev/connectivity/net-policy-management.md
已删除
100644 → 0
浏览文件 @
b7d17c84
# 网络策略管理部件
## 简介
网络策略管理提供一些限制网络的基础能力,包括蜂窝网络策略、休眠/省电模式策略、后台网络策略、重置网络策略等功能。
> **说明:**
> 为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用callback函数,更多方式可以查阅[API参考](../reference/apis/js-apis-net-policy.md)。
## 基本概念
-
休眠模式:设备在不需要工作的时候把一些部件、外设关掉(进入低功耗模式),并限制部分应用对网络的访问。
-
省电模式:省电模式是系统里的一个开关,开启后会降低设备的性能,并限制部分应用对网络的访问。
-
省流量模式:即后台网络策略,对处于后台的使用计量网络的应用进行限制。
-
蜂窝网络:移动通信网络。
-
计量网络:设置了流量配额的电话卡网络、Wlan网络以及以太网。
## 约束
-
开发语言:C++ JS
-
系统:linux内核
-
本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 场景介绍
网络策略管理的典型场景有:
-
设置计量网络配额/获取已经设置的计量网络策略
-
后台网络限制开关/获取后台网络限制状态/获取指定uid在后台状态下能否访问网络
-
设定指定uid访问计量网络的策略/获取指定uid访问计量网络的策略/获取设置了对应策略的uids
-
重置网络策略
-
判断uid能否访问计量/非计量网络
-
将对应uid从休眠白名单里添加、移除/获取休眠模式的白名单列表
-
将对应uid从省电白名单里添加、移除/获取省电模式的白名单列表
-
更新网络提醒策略
以下分别介绍具体开发方式。
## 接口说明
完整的JS API说明以及实例代码请参考:
[
网络策略管理
](
../reference/apis/js-apis-net-policy.md
)
。
| 类型 | 接口 | 功能说明 |
| ---- | ---- | ---- |
| ohos.net.policy | function setBackgroundPolicy(isAllowed: boolean, callback: AsyncCallback
\<
void>): void |设置后台网络策略,使用callback方式作为异步方法 |
| ohos.net.policy | function isBackgroundAllowed(callback: AsyncCallback
\<
boolean>): void; |获取后台网络策略,使用callback方式作为异步方法 |
| ohos.net.policy | function setPolicyByUid(uid: number, policy: NetUidPolicy, callback: AsyncCallback
\<
void>): void; |设置对应uid应用的访问计量网络的策略,使用callback方式作为异步方法 |
| ohos.net.policy | function getPolicyByUid(uid: number, callback: AsyncCallback
\<
NetUidPolicy>): void;| 通过应用uid获取策略,使用callback方式作为异步方法 |
| ohos.net.policy | function getUidsByPolicy(policy: NetUidPolicy, callback: AsyncCallback
\<
Array
\<
number>>): void; | 通过策略获取设置这一策略的应用uid数组,使用callback方式作为异步方法 |
| ohos.net.policy | function getNetQuotaPolicies(callback: AsyncCallback
\<
Array
\<
NetQuotaPolicy>>): void; |获取计量网络策略,使用callback方式作为异步方法 |
| ohos.net.policy | function setNetQuotaPolicies(quotaPolicies: Array
\<
NetQuotaPolicy>, callback: AsyncCallback
\<
void>): void; |设置计量网络策略,使用callback方式作为异步方法 |
| ohos.net.policy | function restoreAllPolicies(iccid: string, callback: AsyncCallback
\<
void>): void; | 重置对应sim卡id的蜂窝网络、后台网络策略、防火墙策略、应用对应的策略,使用callback方式作为异步方法 |
| ohos.net.policy | function isUidNetAllowed(uid: number, isMetered: boolean, callback: AsyncCallback
\<
boolean>): void; | 获取对应uid能否访问计量或非计量网络,使用callback方式作为异步方法 |
| ohos.net.policy | function isUidNetAllowed(uid: number, iface: string, callback: AsyncCallback
\<
boolean>): void; | 获取对应uid能否访问指定的iface的网络,使用callback方式作为异步方法 |
| ohos.net.policy | function setDeviceIdleAllowList(uid: number, isAllowed: boolean, callback: AsyncCallback
\<
void>): void; | 设置指定uid应用是否在休眠防火墙的白名单,使用callback方式作为异步方法 |
| ohos.net.policy | function getDeviceIdleAllowList(callback: AsyncCallback
\<
Array
\<
number>>): void; | 获取休眠模式白名单所包含的uid数组,使用callback方式作为异步方法 |
| ohos.net.policy | function getBackgroundPolicyByUid(uid: number, callback: AsyncCallback
\<
NetBackgroundPolicy>): void; | 获取指定uid能否访问后台网络,使用callback方式作为异步方法 |
| ohos.net.policy | function resetPolicies(iccid: string, callback: AsyncCallback
\<
void>): void; | 重置对应sim卡id的蜂窝网络、后台网络策略、防火墙策略、应用对应的策略,使用callback方式作为异步方法 |
| ohos.net.policy | function updateRemindPolicy(netType: NetBearType, iccid: string, remindType: RemindType, callback: AsyncCallback
\<
void>): void; | 更新提醒策略,使用callback方式作为异步方法 |
| ohos.net.policy | function setPowerSaveAllowList(uid: number, isAllowed: boolean, callback: AsyncCallback
\<
void>): void; | 设置指定uid应用是否在省电防火墙的白名单,使用callback方式作为异步方法 |
| ohos.net.policy | function getPowerSaveAllowList(callback: AsyncCallback
\<
Array
\<
number>>): void; | 获取省电模式白名单所包含的uid数组,使用callback方式作为异步方法 |
| ohos.net.policy | function on(type: "netUidPolicyChange", callback: Callback
\<
{ uid: number, policy: NetUidPolicy }>): void; | 订阅policy发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function off(type: "netUidPolicyChange", callback: Callback
\<
{ uid: number, policy: NetUidPolicy }>): void; | 取消订阅policy发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function on(type: "netUidRuleChange", callback: Callback
\<
{ uid: number, rule: NetUidRule }>): void; | 订阅rule发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function off(type: "netUidRuleChange", callback: Callback
\<
{ uid: number, rule: NetUidRule }>): void; | 取消订阅rule发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function on(type: "netMeteredIfacesChange", callback: Callback
\<
Array
\<
string>>): void; | 订阅计量iface发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function off(type: "netMeteredIfacesChange", callback: Callback
\<
Array
\<
string>>): void; | 取消订阅计量iface发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function on(type: "netQuotaPolicyChange", callback: Callback
\<
Array
\<
NetQuotaPolicy>>): void; | 订阅计量网络策略发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function off(type: "netQuotaPolicyChange", callback: Callback
\<
Array
\<
NetQuotaPolicy>>): void; | 取消订阅计量网络策略发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function on(type: "netBackgroundPolicyChange", callback: Callback
\<
boolean>): void; | 订阅后台网络策略发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function off(type: "netBackgroundPolicyChange", callback: Callback
\<
boolean>): void; | 取消订阅后台网络策略发生改变时的回调,使用callback方式作为异步方法 |
## 设置计量网络配额/获取已经设置的计量网络策略
1.
从@ohos.net.policy.d.ts中导入policy命名空间。
2.
调用setNetQuotaPolicies方法,设置计量网络策略。
3.
调用getNetQuotaPolicies方法,获取计量网络策略。
```
js
// 引入包名
import
policy
from
'
@ohos.net.policy
'
;
addNetQuotaPolicy
(){
let
param
=
{
// netType值详见 [NetBearType](../reference/apis/js-apis-net-connection.md#netbeartype)
netType
:
Number
.
parseInt
(
this
.
netType
),
// 计量蜂窝网络的SIM卡的标识值。以太网,wifi网络不会用到
iccid
:
this
.
iccid
,
// 计量蜂窝网络中配合iccid联合使用。以太网,wifi网络单独使用。用于标记类型
ident
:
this
.
ident
,
// 计量开始时间。例如M1、D1、Y1等
periodDuration
:
this
.
periodDuration
,
// 发出警告的流量阈值 大于0的整数即可
warningBytes
:
Number
.
parseInt
(
this
.
warningBytes
),
// 流量设置的配额 大于0的整数即可
limitBytes
:
Number
.
parseInt
(
this
.
limitBytes
),
// 是否为计量网络 true为计量网络 false为非计量网络
metered
:
Boolean
(
Number
.
parseInt
(
this
.
metered
)),
https
:
//gitee.com/openharmony/docs/pulls/14404
// 到达流量限制后的动作 详见[LimitAction](../reference/apis/js-apis-net-policy.md#limitaction)
limitAction
:
Number
.
parseInt
(
this
.
limitAction
)
};
this
.
netQuotaPolicyList
.
push
(
param
);
},
// 订阅计量网络iface发生改变时的回调
policy
.
on
(
'
netMeteredIfacesChange
'
,
(
data
)
=>
{
this
.
log
(
'
on netMeteredIfacesChange:
'
+
JSON
.
stringify
(
data
));
});
// 订阅计量网络策略发生改变时的回调
policy
.
on
(
'
netQuotaPolicyChange
'
,
(
data
)
=>
{
this
.
log
(
'
on netQuotaPolicyChange:
'
+
JSON
.
stringify
(
data
));
});
// 调用setNetQuotaPolicies方法,设置计量网络策略
setNetQuotaPolicies
(){
this
.
dialogType
=
DialogType
.
HIDE
;
policy
.
setNetQuotaPolicies
(
this
.
netQuotaPolicyList
,
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
;
});
},
// 调用getNetQuotaPolicies方法,获取计量网络策略
getNetQuotaPolicies
(){
policy
.
getNetQuotaPolicies
((
err
,
data
)
=>
{
this
.
callBack
(
err
,
data
);
if
(
data
){
this
.
netQuotaPolicyList
=
data
;
}
});
},
// 取消订阅计量网络iface发生改变时的回调
policy
.
off
(
'
netMeteredIfacesChange
'
,
(
data
)
=>
{
this
.
log
(
'
off netMeteredIfacesChange:
'
+
JSON
.
stringify
(
data
));
});
// 取消订阅计量网络策略发生改变时的回调
policy
.
off
(
'
netQuotaPolicyChange
'
,
(
data
)
=>
{
this
.
log
(
'
off netQuotaPolicyChange:
'
+
JSON
.
stringify
(
data
));
});
```
## 后台网络限制开关/获取后台网络限制状态/获取指定uid在后台状态下能否访问网络
### 开发步骤
1.
从@ohos.net.policy.d.ts中导入policy命名空间。
2.
调用setBackgroundAllowed方法,设置开启后台省流量或关闭后台省流量。
3.
调用isBackgroundAllowed方法,获取后台网络限制状态(省流量)是开启还是关闭。
4.
调用getBackgroundPolicyByUid方法,获取指定uid在后台状态下能否访问网络。
```
js
// 引入包名
import
policy
from
'
@ohos.net.policy
'
// 订阅后台网络策略发生改变时的回调
policy
.
on
(
'
netBackgroundPolicyChange
'
,
(
data
)
=>
{
this
.
log
(
'
on netBackgroundPolicyChange:
'
+
JSON
.
stringify
(
data
));
});
// 调用setBackgroundAllowed方法,设置开启后台省流量或关闭后台省流量
setBackgroundAllowed
()
{
policy
.
setBackgroundAllowed
(
Boolean
(
Number
.
parseInt
(
this
.
isBoolean
)),
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
// 调用isBackgroundAllowed方法,获取后台网络限制状态(省流量)是开启还是关闭。
isBackgroundAllowed
()
{
policy
.
isBackgroundAllowed
((
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
// 调用getBackgroundPolicyByUid方法,获取指定uid在后台状态下能否访问网络。
getBackgroundPolicyByUid
()
{
policy
.
getBackgroundPolicyByUid
(
Number
.
parseInt
(
this
.
firstParam
),
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
// 取消订阅后台网络策略发生改变时的回调
policy
.
off
(
'
netBackgroundPolicyChange
'
,
(
data
)
=>
{
this
.
log
(
'
off netBackgroundPolicyChange:
'
+
JSON
.
stringify
(
data
));
});
```
## 设定指定uid访问计量网络的策略/获取指定uid访问计量网络的策略/获取设置了对应策略的uids
### 开发步骤
1.
从@ohos.net.policy.d.ts中导入policy命名空间。
2.
调用setPolicyByUid方法,设置指定uid是否可以访问后台网络。
3.
调用getPolicyByUid方法,获取指定uid的策略。
4.
调用getUidsByPolicy方法,获取使用指定策略的uids。
```
js
// 引入包名
import
policy
from
'
@ohos.net.policy
'
// 订阅uid的policy发生改变时的回调
policy
.
on
(
'
netUidPolicyChange
'
,
(
data
)
=>
{
this
.
log
(
'
on netUidPolicyChange:
'
+
JSON
.
stringify
(
data
));
});
// 订阅uid的rule发生改变时的回调
policy
.
on
(
'
netUidRuleChange
'
,
(
data
)
=>
{
this
.
log
(
'
on netUidRuleChange:
'
+
JSON
.
stringify
(
data
));
});
// 调用setPolicyByUid方法,设置指定uid是否可以访问后台网络
setPolicyByUid
()
{
let
param
=
{
uid
:
Number
.
parseInt
(
this
.
firstParam
),
policy
:
Number
.
parseInt
(
this
.
currentNetUidPolicy
)
}
policy
.
setPolicyByUid
(
Number
.
parseInt
(
this
.
firstParam
),
Number
.
parseInt
(
this
.
currentNetUidPolicy
),
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
// 调用getPolicyByUid方法,获取指定uid的策略
getPolicyByUid
()
{
policy
.
getPolicyByUid
(
Number
.
parseInt
(
this
.
firstParam
),
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
// 调用getUidsByPolicy方法,获取使用指定策略的uids
getUidsByPolicy
(){
policy
.
getUidsByPolicy
(
Number
.
parseInt
(
this
.
currentNetUidPolicy
),
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
// 取消订阅uid的policy发生改变时的回调
policy
.
off
(
'
netUidPolicyChange
'
,
(
data
)
=>
{
this
.
log
(
'
off netUidPolicyChange:
'
+
JSON
.
stringify
(
data
));
});
// 取消订阅uid的rule发生改变时的回调
policy
.
off
(
'
netUidRuleChange
'
,
(
data
)
=>
{
this
.
log
(
'
off netUidRuleChange:
'
+
JSON
.
stringify
(
data
));
});
```
## 重置网络策略
### 开发步骤
1.
从@ohos.net.policy.d.ts中导入policy命名空间。
2.
调用restoreAllPolicies方法,重置网络策略。
```
js
// 引入包名
import
policy
from
'
@ohos.net.policy
'
// 调用restoreAllPolicies方法,重置网络策略
restoreAllPolicies
(){
policy
.
restoreAllPolicies
(
this
.
firstParam
,
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
```
## 判断uid能否访问计量/非计量网络
### 开发步骤
1.
从@ohos.net.policy.d.ts中导入policy命名空间。
2.
调用isUidNetAllowed方法,获取uid能否访问计量/非计量网络。
```
js
// 引入包名
import
policy
from
'
@ohos.net.policy
'
// 调用isUidNetAllowed方法,获取uid能否访问计量/非计量网络
isUidNetAllowedIsMetered
(){
let
param
=
{
uid
:
Number
.
parseInt
(
this
.
firstParam
),
isMetered
:
Boolean
(
Number
.
parseInt
(
this
.
isBoolean
))
}
policy
.
isUidNetAllowed
(
Number
.
parseInt
(
this
.
firstParam
),
Boolean
(
Number
.
parseInt
(
this
.
isBoolean
)),
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
```
## 将对应uid从休眠白名单里添加、移除/获取休眠模式的白名单列表
### 开发步骤
1.
从@ohos.net.policy.d.ts中导入policy命名空间。
2.
调用setDeviceIdleAllowList方法,设置uid是否添加到休眠模式白名单。
3.
调用getDeviceIdleAllowList方法,获取添加在休眠模式白名单的uids。
```
js
// 引入包名
import
policy
from
'
@ohos.net.policy
'
// 调用setDeviceIdleAllowList方法,设置uid是否添加到休眠模式白名单
setDeviceIdleAllowList
(){
let
param
=
{
uid
:
Number
.
parseInt
(
this
.
firstParam
),
isAllowed
:
Boolean
(
Number
.
parseInt
(
this
.
isBoolean
))
}
policy
.
setDeviceIdleAllowList
(
Number
.
parseInt
(
this
.
firstParam
),
Boolean
(
Number
.
parseInt
(
this
.
isBoolean
)),
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
// 调用getDeviceIdleAllowList方法,获取添加在休眠模式白名单的uids
getDeviceIdleAllowList
(){
policy
.
getDeviceIdleAllowList
((
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
```
## 将对应uid从省电白名单里添加、移除/获取省电模式的白名单列表
### 开发步骤
1.
从@ohos.net.policy.d.ts中导入policy命名空间。
2.
调用setPowerSaveAllowList方法,设置uid是否添加到省电模式白名单。
3.
调用getPowerSaveAllowList方法,获取添加在省电模式白名单的uids。
```
js
// 引入包名
import
policy
from
'
@ohos.net.policy
'
// 调用setPowerSaveAllowList方法,设置uid是否添加到省电模式白名单
setPowerSaveAllowList
(){
let
param
=
{
uid
:
Number
.
parseInt
(
this
.
firstParam
),
isAllowed
:
Boolean
(
Number
.
parseInt
(
this
.
isBoolean
))
}
policy
.
setPowerSaveAllowList
(
Number
.
parseInt
(
this
.
firstParam
),
Boolean
(
Number
.
parseInt
(
this
.
isBoolean
)),
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
// 调用getPowerSaveAllowList方法,获取添加在省电模式白名单的uids
getPowerSaveAllowList
(){
policy
.
getPowerSaveAllowList
((
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
```
## 更新网络提醒策略
### 开发步骤
1.
从@ohos.net.policy.d.ts中导入policy命名空间。
2.
调用updateRemindPolicy,更新网络提醒策略。
```
js
// 引入包名
import
policy
from
'
@ohos.net.policy
'
// 调用updateRemindPolicy,更新网络提醒策略
updateRemindPolicy
()
{
let
param
=
{
netType
:
Number
.
parseInt
(
this
.
netType
),
iccid
:
this
.
firstParam
,
remindType
:
this
.
currentRemindType
}
policy
.
updateRemindPolicy
(
Number
.
parseInt
(
this
.
netType
),
this
.
firstParam
,
Number
.
parseInt
(
this
.
currentRemindType
),
(
err
,
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
err
))
;
console
.
log
(
JSON
.
stringify
(
data
))
});
},
```
\ No newline at end of file
zh-cn/application-dev/faqs/Readme-CN.md
浏览文件 @
b733f452
...
...
@@ -3,8 +3,13 @@
-
[
如何编译full-SDK
](
full-sdk-compile-guide.md
)
-
[
如何替换full-SDK
](
full-sdk-switch-guide.md
)
-
[
Ability开发常见问题
](
faqs-ability.md
)
-
[
ArkUI框架开发常见问题
](
faqs-arkui.md
)
-
[
ArkUI开发框架开发-ArkTS语法常见问题
](
faqs-arkui-arkts.md
)
-
ArkUI框架开发常见问题(ArkTS)
-
[
ArkTS语法使用常见问题
](
faqs-arkui-arkts.md
)
-
[
ArkUI组件开发常见问题(ArkTS)
](
faqs-arkui-component.md
)
-
[
ArkUI布局开发常见问题(ArkTS)
](
faqs-arkui-layout.md
)
-
[
ArkUI路由/导航开发常见问题(ArkTS)
](
faqs-arkui-route-nav.md
)
-
[
ArkUI动画/交互事件开发常见问题(ArkTS)
](
faqs-arkui-animation-interactive-event.md
)
-
[
ArkUI框架开发常见问题(JS)
](
faqs-arkui-js.md
)
-
[
Web开发常见问题
](
faqs-arkui-web.md
)
-
[
包管理开发常见问题
](
faqs-bundle-management.md
)
-
[
资源管理开发常见问题
](
faqs-globalization.md
)
...
...
zh-cn/application-dev/faqs/faqs-arkui-animation-interactive-event.md
0 → 100644
浏览文件 @
b733f452
# ArkUI动画/交互事件开发常见问题(ArkTS)
## 焦点事件onBlur/onFocus回调无法触发
适用于 OpenHarmony 3.2 Beta5 API 9
**问题现象**
焦点事件onBlur/onFocus回调无法触发
**解决措施**
焦点事件默认情况下需要外接键盘的Tab键,或方向键触发,点击触发焦点事件需要添加焦点控制属性focusOnTouch。
**参考链接**
[
焦点控制
](
../reference/arkui-ts/ts-universal-attributes-focus.md
)
## scroll里面套一个grid,如何禁用grid的滑动事件
适用于 OpenHarmony 3.2 Beta5 API 9
可以通过onScrollFrameBegin事件和scrollBy方法实现容器嵌套滚动。
可参考:
[
容器嵌套滚动样例
](
../reference/arkui-ts/ts-container-scroll.md#示例2
)
## 如何实现一个组件不停地旋转
适用于 OpenHarmony 3.2 Beta5 API 9
可以通过
[
属性动画
](
../reference/arkui-ts/ts-animatorproperty.md
)
的方式实现。
## 列表目前无法键盘上下滑动,是否能力不支持
适用于 OpenHarmony 3.2 Beta5 API 9
**解决措施**
有以下两种方案:
1.
需要在列表子项中添加focusable
\(
true
\)
进行获焦。
2.
在每个item的外层嵌套一个可获焦组件,例如Button。
## 键盘移动焦点对象按下enter,为什么不会触发点击事件
适用于 OpenHarmony 3.2 Beta5 API 9
组件的内置的点击事件和开发者自定义的onClick点击事件默认会和空格键绑定,并非与enter键绑定(UX规格)。
## 多层组件嵌套button,如何阻止事件传递
适用于 OpenHarmony 3.2 Beta5 API 9
可以通过将button组件绑定参数stopPropagation来控制冒泡传递。
## 使用router或Navigator实现页面跳转时,如何关闭页面间转场动效
适用于 OpenHarmony 3.2 Beta5 API 9
1.
参考
[
页面间转场示例
](
../reference/arkui-ts/ts-page-transition-animation.md#示例
)
在当前页面和目标页面中定义pageTransition方法。
2.
将页面入场组件PageTransitionEnter和页面退场组件PageTransitionExit的动效参数duration都设置为0。
## 在容器组件嵌套的场景下,如何解决手势拖拽事件出现错乱的问题
适用于 OpenHarmony 3.2 Beta5 API 9
PanGesture用于触发拖动手势事件,滑动的最小距离distance默认为5vp时拖动手势识别成功。可以将distance值设为1,使拖动更灵敏,避免造成事件错乱。
**参考链接**
[
PanGesture
](
../reference/arkui-ts/ts-basic-gestures-pangesture.md
)
## 基于OpenHarmony开发的应用,是否支持使用fontFamily属性设置不同的字体
适用于:OpenHarmony 3.2 Beta5 API 9
基于OpenHarmony开发的应用,默认字体'HarmonyOS Sans',且当前只支持这种字体。
## 点击输入框时会拉起软键盘,点击button时软键盘关闭要如何实现
适用于 OpenHarmony 3.2 Beta5 API 9
TextInput获取焦点会弹出输入法,失去焦点就会关闭软键盘,使用focusControl控制焦点即可关闭软件盘。
**代码示例**
```
build() {
Column() {
TextInput()
Button(`hide`)
.key('button')
.onClick(()=>{
focusControl.requestFocus('button')
})
}
}
```
## 当父组件绑定了onTouch,其子组件Button绑定了onClick,如何做到点击Button只响应Button的onClick,而不用响应父组件的onTouch?
适用于 OpenHarmony 3.2 Beta5 API 9
可以在Button组件中绑定onTouch,并在onTouch中使用stopPropagation
\(\)
阻止onTouch冒泡传递到父组件阻止冒泡传递。
**代码示例**
```
build() {
Row() {
Button("点击我")
.width(100)
.width(100)
.backgroundColor('#f00')
.onClick(()=>{
console.log("Button onClick")
})
.onTouch((e) => {
console.log("Button onTouch")
e.stopPropagation()
})
}
.onTouch(() => {
console.log("Row onTouch")
})
}
```
## 绑定菜单后无法使用右键触发菜单
适用于:OpenHarmony 3.2 Beta API 9
**解决措施**
目前菜单仅支持点击、长按触发方式,没有右键方式。
## 点击文本输入框,如何屏蔽系统默认键盘弹起行为?
适用于:OpenHarmony 3.2 Beta5 API 9
设置TextInput组件的focusable属性为false,此组件则不可获焦,就不会拉起系统默认的键盘。
## 如何实现上下切换的页面间跳转动画
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
页面切换时如何实现上下切换动画
**解决措施**
可以使用pageTransition函数来实现页面转场效果,通过PageTransitionEnter和PageTransitionExit指定页面进入和退出的动画效果,将其slide属性设置为SlideEffect.Bottom,则页面入场时从下边划入,出场时滑出到下边,即可实现上下切换效果。
**代码示例**
```
// Index.ets
@Entry
@Component
struct PageTransition1 {
build() {
Stack({alignContent: Alignment.Bottom}) {
Navigator({ target: 'pages/Page1'}) {
Image($r('app.media.ic_banner01')).width('100%').height(200) // 图片存放在media文件夹下
}
}.height('100%').width('100%')
}
pageTransition() {
PageTransitionEnter({ duration: 500, curve: Curve.Linear }).slide(SlideEffect.Bottom)
PageTransitionExit({ duration: 500, curve: Curve.Ease }).slide(SlideEffect.Bottom)
}
}
```
```
// Page1.ets
@Entry
@Component
struct PageTransition2 {
build() {
Stack({alignContent: Alignment.Bottom}) {
Navigator({ target: 'pages/Index'}) {
Image($r('app.media.ic_banner02')).width('100%').height(200) // 图片存放在media文件夹下
}
}.height('100%').width('100%')
}
pageTransition() {
PageTransitionEnter({ duration: 500, curve: Curve.Linear }).slide(SlideEffect.Bottom)
PageTransitionExit({ duration: 500, curve: Curve.Ease }).slide(SlideEffect.Bottom)
}
}
```
**参考链接**
[
页面转场动画
](
https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/ui/arkts-page-transition-animation.md/
)
## 自定义组件间如何实现从底部滑入滑出的效果
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
一个页面底部默认显示自定义组件A,点击自定义组件A,则A消失,自定义组件B从底部出现;点击自定义组件B,则组件B消失,A从底部出现。这个效果要如何实现?
**解决措施**
可以使用transition产生组件转场动画,其参数type用来设置组件变化场景,包括新增和删除;参数translate用来设置转场时的平移效果。注意transition需要配合animateTo才能生效,动效时长、曲线、延时跟随animateTo中的配置。
**代码示例**
```
@Entry
@Component
struct ComponentTransition {
@State flag: boolean = true;
build() {
Stack({alignContent: Alignment.Bottom}) {
if (this.flag) {
ComponentChild1({ flag: $flag })
.transition({ type: TransitionType.Insert,translate: { x: 0, y: 200 } })
}
if (!this.flag) {
ComponentChild2({ flag: $flag })
.transition({ type: TransitionType.Insert, translate: { x: 0, y: 200 } })
}
}.height('100%').width('100%')
}
}
@Component
struct ComponentChild1 {
@Link flag: boolean
build() {
Column() {
Image($r('app.media.ic_banner01'))
.width('100%')
.height(200)
.onClick(() => {
animateTo({ duration: 1000 }, () => {
this.flag = !this.flag;
})
})
}
}
}
@Component
struct ComponentChild2 {
@Link flag: boolean
build() {
Column() {
Image($r('app.media.ic_banner02'))
.width('100%')
.height(200)
.onClick(() => {
animateTo({ duration: 1000 }, () => {
this.flag = !this.flag;
})
})
}
}
}
```
**参考链接**
[
组件内转场动画
](
https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/ui/arkts-transition-animation-within-component.md/
)
zh-cn/application-dev/faqs/faqs-arkui-arkts.md
浏览文件 @
b733f452
# Ark
UI开发框架(ArkTS语法)
# Ark
TS语法使用常见问题
## ArkUI如何通过代码动态创建组件
...
...
zh-cn/application-dev/faqs/faqs-arkui.md
→
zh-cn/application-dev/faqs/faqs-arkui
-component
.md
浏览文件 @
b733f452
此差异已折叠。
点击以展开。
zh-cn/application-dev/faqs/faqs-arkui-js.md
0 → 100644
浏览文件 @
b733f452
# ArkUI框架开发常见问题(JS)
## 用数组变量控制组件属性不生效
适用于:OpenHarmony,IDE 3.0.0.993,API 8
目前类web范式对数组中元素的修改不会被监听,因此不会触发页面刷新 ,需要产生数组对象的修改才可以触发页面刷新。所以,使用test1
\(\)
对修改数组的引用时,button组件会被禁用,使用test2
\(\)
修改数组中某个元素,对控制button组件disabled属性的数组单元赋值,button组件并不会被禁用。除了test1
\(\)
中对数组整体赋值,我们还可以使用修改数组的方法,如splice
\(\)
,也可以达到页面刷新的效果。
```
test1() {this.isDisabled = [true, true, true, true, true]; //该语句可实现对button组件的禁用
test2() {this.isDisabled[0] = true; //该语句对button组件的禁用不生效
```
## input组件是否支持设置文本居中对齐
适用于:OpenHarmony 3.2 Beta5 API 9 FA模型
**问题现象**
input组件中输入的文本如何实现文本居中对齐格式,使用text-align没有效果。
**解决措施**
input组件属于类web范式组件,不_支_持设置文本对齐方式,text-align样式只针对text组件生效。
**参考链接**
[
input组件
](
../reference/arkui-js/js-components-basic-input.md
)
,
[
text组件
](
../reference/arkui-js/js-components-basic-text.md
)
## 如何判断JS对象中是否存在某个值
适用于:OpenHarmony 3.2 Release API 9
**解决措施**
Object.values
\(
对象名
\)
.indexOf
\(
想要判断的值
\)
,若返回-1表示不包含对应值,返回值不等于-1则表示包含。
\ No newline at end of file
zh-cn/application-dev/faqs/faqs-arkui-layout.md
0 → 100644
浏览文件 @
b733f452
# ArkUI布局开发常见问题(ArkTS)
## 使用position之后height不生效
适用于 OpenHarmony 3.2 Beta5 API 9
**解决措施**
容器组件在使用position之后会脱离文本流,导致容器脱离外层容器束缚,导致height不生效,可以将外层容器换成Stack可以解决这个问题。
## Grid组件如何实现横向滚动
适用于 OpenHarmony 3.2 Beta5 API 9
将Grid组件设置当前网格布局行数rowsTemplate且不设置列数,当内容超出Grid组件宽度时,Grid可横向滚动进行内容展示。
## List组件与其他组件并列使用时,若未设置List滚动方向上的尺寸,无法拖动到底部
适用于 OpenHarmony 3.2 Beta5 API 9
给List加上layoutWeight属性,设置列表自适应占满剩余高度。原理:List属于可滚动容器组件,默认高度是占满全屏幕高度,当出现其他固定高度的组件占领了屏幕的部分高度时,需要开发人员显性的指定List组件占满剩余高度,而不是全屏幕高度。
## Tabs组件在点击Tab项时是否支持禁止切换
适用于 OpenHarmony 3.2 Release API 9
不支持。
## 如何拦截住onBackPress事件,不触发页面返回
适用于 OpenHarmony 3.2 Release API 9
在onBackPress中返回true表示页面自己处理返回逻辑,不会执行默认的返回逻辑。
可参考
[
自定义组件的生命周期-onBackPress
](
../reference/arkui-ts/ts-custom-component-lifecycle.md#onbackpress
)
## List组件怎么实现分组列表的粘性标题效果
适用于 OpenHarmony 3.2 Release API 9
可以通过List组件的sticky属性配合ListItemGroup组件来实现。通过给List组件设置sticky属性为StickyStyle.Header,设置ListItemGroup中header参数对应的头部组件呈现粘性标题效果
可参考:
[
创建列表-添加粘性标题
](
../ui/arkts-layout-development-create-list.md#添加粘性标题
)
zh-cn/application-dev/faqs/faqs-arkui-route-nav.md
0 → 100644
浏览文件 @
b733f452
# ArkUI路由/导航开发常见问题(ArkTS)
## router中params无法正常传递class对象
适用于:OpenHarmony 3.2 Beta5 ,API 9 Stage模型
只能传递对象中的属性,无法传递对象中的方法。
## 在Stage模型下,如何通过router实现页面跳转
适用于:OpenHarmony 3.2 Beta5 ,API 9 Stage模型
1.
对于通过页面路由router实现页面跳转,首先要在main
\_
pages.json配置文件中将所有跳转的页面加入pages列表;
2.
页面路由需要在页面渲染完成之后才能调用,在onInit和onReady生命周期中页面还处于渲染阶段,禁止调用页面路由方法。
**参考链接:**
[
页面路由
](
../reference/apis/js-apis-router.md
)
## router通过调用push方法进堆栈的page是否会被回收
适用于:OpenHarmony 3.2 Beta5 ,API 9 Stage模型
调用push进入堆栈的page不回收,调用back方法出栈后可以被回收。
**参考链接:**
[
Router传递参数
](
../reference/apis/js-apis-router.md#routergetparams
)
zh-cn/application-dev/napi/Readme-CN.md
浏览文件 @
b733f452
# Native API
Native API是OHOS SDK上提供的一组native开发接口与工具集合,方便开发者使用C或者C++语言实现应用的关键功能。Native API只覆盖了OHOS基础的一些底层能力,如libc,图形库,窗口系统,多媒体,压缩库等,并没有完全提供类似于JS API上的完整的OHOS 平台能力。在应用中使用Native API会编译成动态库打包到应用中。
<br/>
## Native API构成介绍
### Native API目录结构
Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个部分组成
|目录|功能说明|
|--|--|
|build|应用中编译动态库的toolchain cmake脚本;这个目录下ohos.toolchain.cmake文件定义了给OHOS交叉编译选项|
|build-tools|放置编译构建的工具,如cmake|
|docs|Native API接口参考文档,通过doxgen从头文件中提取出来|
|llvm|支持OHOS ABI的llvm交叉编译器|
|sysroot|放置编译链接的依赖文件目录,包含头文件,动态库等|
<br/>
### Native API接口
|接口分类|接口功能|引入版本|
|--|--|--|
|标准C库|以musl为基础提供的标准c库接口,当前提供了1500+的接口|8|
|标准C++库|c++运行时库libc++_shared,此库在打包的时候需要打包或者静态链接到应用中|8|
|日志|打印日志到系统的hilog接口|8|
|napi|ArkUI提供的,方便应用开发接入JS应用环境的一组类Node-API,是属于Native API的一部分|8|
|XComponent|ArkUI XComponent组件中的surface与触屏事件接口,方便开发者开发高性能图形应用|8|
|libuv|ArkUI集成的三方的异步IO库|8|
|libz|zlib库,提供基本的压缩,解压接口|8|
|Drawing|系统提供的2D图形库,可以在surface进行绘制|8|
|OpenGL|系统提供的openglv3接口|8|
|Rawfile|应用资源访问接口,可以读取应用中打包的各种资源|8|
|OpenSLES|用于2D,3D音频加速的接口库|8|
|Mindspore|AI模型接口库|9|
|包管理|包服务接口,方便查询应用包信息|8|
Native API中有一部分接口采用开源标准,详细列表见《
[
Native API中支持的标准库
](
https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/reference/native-lib/third_party_libc/musl.md/
)
》《
[
Node_API
](
https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/reference/native-lib/third_party_napi/napi.md/
)
》
## 使用介绍
<br/>
### 建议使用Native API的场景
主要有如下一些
1.
应用性能敏感代码,比如游戏,物理模拟等计算密集型场景
2.
需要复用已有的C或C++库
3.
需要针对CPU特性进行专项定制的库,如neon加速
<br/>
### 不建议使用Native API的场景
1.
写一个纯native的的OHOS应用
2.
希望在尽可能多的OHOS设备上保持兼容的应用
<br/>
# Native API的相关指导
-
[
Native API hello world
](
)
-
本例子引导开发者开发一个hello的Native API库,在ts界面上显示出从hello库中获取的字符串
-
[
Native API介绍
](
introduction.md
)
-
[
Native API在应用工程中的使用指导
](
napi-guidelines.md
)
-
介绍如何使用各种napi接口与js中的模块,接口,异步任务进行互操作
-
[
Drawing开发指导
](
drawing-guidelines.md
)
-
[
Rawfile开发指导
](
rawfile-guidelines.md
)
-
[
NativeWindow开发指导
](
native-window-guidelines.md
)
...
...
zh-cn/application-dev/napi/introduction.md
0 → 100644
浏览文件 @
b733f452
# Native API 介绍
Native API是OHOS SDK上提供的一组native开发接口与工具集合,方便开发者使用C或者C++语言实现应用的关键功能。Native API只覆盖了OHOS基础的一些底层能力,如libc,图形库,窗口系统,多媒体,压缩库等,并没有完全提供类似于JS API上的完整的OHOS 平台能力。在应用中使用Native API会编译成动态库打包到应用中。
## Native API构成介绍
### Native API目录结构
Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个部分组成
|目录|功能说明|
|--|--|
|build|应用中编译动态库的toolchain cmake脚本;这个目录下ohos.toolchain.cmake文件定义了给OHOS交叉编译选项|
|build-tools|放置编译构建的工具,如cmake|
|docs|Native API接口参考文档,通过doxgen从头文件中提取出来|
|llvm|支持OHOS ABI的llvm交叉编译器|
|sysroot|放置编译链接的依赖文件目录,包含头文件,动态库等|
### Native API接口
|接口分类|接口功能|引入版本|
|--|--|--|
|标准C库|以musl为基础提供的标准c库接口,当前提供了1500+的接口|8|
|标准C++库|c++运行时库libc++_shared,此库在打包的时候需要打包或者静态链接到应用中|8|
|日志|打印日志到系统的hilog接口|8|
|napi|ArkUI提供的,方便应用开发接入JS应用环境的一组类Node-API,是属于Native API的一部分|8|
|XComponent|ArkUI XComponent组件中的surface与触屏事件接口,方便开发者开发高性能图形应用|8|
|libuv|ArkUI集成的三方的异步IO库|8|
|libz|zlib库,提供基本的压缩,解压接口|8|
|Drawing|系统提供的2D图形库,可以在surface进行绘制|8|
|OpenGL|系统提供的openglv3接口|8|
|Rawfile|应用资源访问接口,可以读取应用中打包的各种资源|8|
|OpenSLES|用于2D,3D音频加速的接口库|8|
|Mindspore|AI模型接口库|9|
|包管理|包服务接口,方便查询应用包信息|8|
Native API中有一部分接口采用开源标准,详细列表见《
[
Native API中支持的标准库
](
../reference/native-lib/third_party_libc/musl.md
)
》《
[
Node_API
](
../reference/native-lib/third_party_napi/napi.md
)
》
## 使用介绍
### 建议使用Native API的场景
主要有如下一些
1.
应用性能敏感代码,比如游戏,物理模拟等计算密集型场景
2.
需要复用已有的C或C++库
3.
需要针对CPU特性进行专项定制的库,如neon加速
### 不建议使用Native API的场景
1.
写一个纯native的的OHOS应用
2.
希望在尽可能多的OHOS设备上保持兼容的应用
zh-cn/application-dev/quick-start/Readme-CN.md
浏览文件 @
b733f452
...
...
@@ -40,7 +40,7 @@
-
[
app对象内部结构
](
app-structure.md
)
-
[
deviceConfig内部结构
](
deviceconfig-structure.md
)
-
[
module对象内部结构
](
module-structure.md
)
-
[
资源分类与访问
](
resource-categories-and-access.md
)
-
[
资源分类与访问
](
resource-categories-and-access.md
)
-
学习ArkTS语言
-
[
初识ArkTS语言
](
arkts-get-started.md
)
-
基本语法
...
...
zh-cn/application-dev/reference/apis/js-apis-
console
.md
→
zh-cn/application-dev/reference/apis/js-apis-
logs
.md
浏览文件 @
b733f452
文件已移动
zh-cn/application-dev/website.md
浏览文件 @
b733f452
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录