提交 466d4a77 编写于 作者: D duangavin123 提交者: Gitee

Merge branch 'master' of gitee.com:openharmony/docs into master

Signed-off-by: Nduangavin123 <duanxichao@huawei.com>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
| 接口名 | 接口描述 | | 接口名 | 接口描述 |
| -------- | -------- | | -------- | -------- |
| removeStickyCommonEvent(event: string, callback: AsyncCallback<void>): void | 移除粘性公共事件 | | removeStickyCommonEvent(event: string, callback: AsyncCallback\<void>): void | 移除粘性公共事件 |
## 开发步骤 ## 开发步骤
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
| ---- | ---- | ---- | | ---- | ---- | ---- |
| ohos.net.connection | function getDefaultNet(callback: AsyncCallback\<NetHandle>): void; |获取一个含有默认网络的netId的NetHandle对象,使用callback回调 | | ohos.net.connection | function getDefaultNet(callback: AsyncCallback\<NetHandle>): void; |获取一个含有默认网络的netId的NetHandle对象,使用callback回调 |
| ohos.net.connection | function getGlobalHttpProxy<sup>10+</sup>(callback: AsyncCallback\<HttpProxy>): void;| 获取网络的全局代理设置,使用callback回调 | | ohos.net.connection | function getGlobalHttpProxy<sup>10+</sup>(callback: AsyncCallback\<HttpProxy>): void;| 获取网络的全局代理设置,使用callback回调 |
| ohos.net.connection | function setGlobalHttpProxy<sup>10+</sup>(httpProxy: HttpProxy, callback: AsyncCallback<void>): void;| 设置网络全局Http代理配置信息,使用callback回调 | | ohos.net.connection | function setGlobalHttpProxy<sup>10+</sup>(httpProxy: HttpProxy, callback: AsyncCallback\<void>): void;| 设置网络全局Http代理配置信息,使用callback回调 |
| ohos.net.connection | function getAppNet<sup>9+</sup>(callback: AsyncCallback\<NetHandle>): void;| 获取一个App绑定的包含了网络netId的NetHandle对象,使用callback回调 | | ohos.net.connection | function getAppNet<sup>9+</sup>(callback: AsyncCallback\<NetHandle>): void;| 获取一个App绑定的包含了网络netId的NetHandle对象,使用callback回调 |
| ohos.net.connection | function setAppNet<sup>9+</sup>(netHandle: NetHandle, callback: AsyncCallback\<void>): void;| 绑定App到指定网络,绑定后的App只能通过指定网络访问外网。使用callback回调 | | ohos.net.connection | function setAppNet<sup>9+</sup>(netHandle: NetHandle, callback: AsyncCallback\<void>): void;| 绑定App到指定网络,绑定后的App只能通过指定网络访问外网。使用callback回调 |
| ohos.net.connection | function getDefaultNetSync<sup>9+</sup>(): NetHandle; |使用同步方法获取默认激活的数据网络。可以使用getNetCapabilities去获取网络的类型、拥有的能力等信息。| | ohos.net.connection | function getDefaultNetSync<sup>9+</sup>(): NetHandle; |使用同步方法获取默认激活的数据网络。可以使用getNetCapabilities去获取网络的类型、拥有的能力等信息。|
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
| ohos.net.connection | function getAllNets(callback: AsyncCallback\<Array\<NetHandle>>): void;| 获取所处于连接状态的网络的MetHandle对象列表,使用callback回调 | | ohos.net.connection | function getAllNets(callback: AsyncCallback\<Array\<NetHandle>>): void;| 获取所处于连接状态的网络的MetHandle对象列表,使用callback回调 |
| ohos.net.connection | function getConnectionProperties(netHandle: NetHandle, callback: AsyncCallback\<ConnectionProperties>): void; |查询默认网络的链路信息,使用callback回调 | | ohos.net.connection | function getConnectionProperties(netHandle: NetHandle, callback: AsyncCallback\<ConnectionProperties>): void; |查询默认网络的链路信息,使用callback回调 |
| ohos.net.connection | function getNetCapabilities(netHandle: NetHandle, callback: AsyncCallback\<NetCapabilities>): void; |查询默认网络的能力集信息,使用callback回调 | | ohos.net.connection | function getNetCapabilities(netHandle: NetHandle, callback: AsyncCallback\<NetCapabilities>): void; |查询默认网络的能力集信息,使用callback回调 |
| ohos.net.connection | function isDefaultNetMetered<sup>9+</sup>(callback: AsyncCallback<boolean>): void; |检查当前网络上的数据流量使用是否被计量,使用callback方式作为异步方法 | | ohos.net.connection | function isDefaultNetMetered<sup>9+</sup>(callback: AsyncCallback\<boolean>): void; |检查当前网络上的数据流量使用是否被计量,使用callback方式作为异步方法 |
| ohos.net.connection | function reportNetConnected(netHandle: NetHandle, callback: AsyncCallback\<void>): void;| 向网络管理报告网络处于可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。使用callback回调 | | ohos.net.connection | function reportNetConnected(netHandle: NetHandle, callback: AsyncCallback\<void>): void;| 向网络管理报告网络处于可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。使用callback回调 |
| ohos.net.connection | function reportNetDisconnected(netHandle: NetHandle, callback: AsyncCallback\<void>): void;| 向网络管理报告网络处于不可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。使用callback回调 | | ohos.net.connection | function reportNetDisconnected(netHandle: NetHandle, callback: AsyncCallback\<void>): void;| 向网络管理报告网络处于不可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。使用callback回调 |
| ohos.net.connection | function getAddressesByName(host: string, callback: AsyncCallback\<Array\<NetAddress>>): void; |使用对应网络解析域名,获取所有IP,使用callback回调 | | ohos.net.connection | function getAddressesByName(host: string, callback: AsyncCallback\<Array\<NetAddress>>): void; |使用对应网络解析域名,获取所有IP,使用callback回调 |
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
- [HTTP数据请求](http-request.md):通过HTTP发起一个数据请求。 - [HTTP数据请求](http-request.md):通过HTTP发起一个数据请求。
- [WebSocket连接](websocket-connection.md):使用WebSocket建立服务器与客户端的双向连接。 - [WebSocket连接](websocket-connection.md):使用WebSocket建立服务器与客户端的双向连接。
- [Socket连接](socket-connection.md):通过Socket进行数据传输。 - [Socket连接](socket-connection.md):通过Socket进行数据传输。
- [网络策略管理](net-policy-management.md):提供一些限制网络的基础能力,包括蜂窝网络策略、休眠/省电模式策略、后台网络策略、重置网络策略等功能。
- [网络共享](net-sharing.md):分享设备已有网络给其他连接设备,支持Wi-Fi热点共享、蓝牙共享和USB共享,同时提供网络共享状态、共享流量查询功能。 - [网络共享](net-sharing.md):分享设备已有网络给其他连接设备,支持Wi-Fi热点共享、蓝牙共享和USB共享,同时提供网络共享状态、共享流量查询功能。
- [以太网连接](net-ethernet.md):以太网连接主要提供有线网络能力,提供设置有线网络的IP地址,子网掩码,网关,DNS等信息。 - [以太网连接](net-ethernet.md):以太网连接主要提供有线网络能力,提供设置有线网络的IP地址,子网掩码,网关,DNS等信息。
- [网络连接管理](net-connection-manager.md):网络连接管理提供管理网络一些基础能力,包括WiFi/蜂窝/Ethernet等多网络连接优先级管理、网络质量评估、订阅默认/指定网络连接状态变化、查询网络连接信息、DNS解析等功能。 - [网络连接管理](net-connection-manager.md):网络连接管理提供管理网络一些基础能力,包括WiFi/蜂窝/Ethernet等多网络连接优先级管理、网络质量评估、订阅默认/指定网络连接状态变化、查询网络连接信息、DNS解析等功能。
......
...@@ -183,8 +183,9 @@ ...@@ -183,8 +183,9 @@
- UI界面 - UI界面
- [@ohos.animator (动画)](js-apis-animator.md) - [@ohos.animator (动画)](js-apis-animator.md)
- [@ohos.arkui.componentSnapshot(组件截图)](js-apis-arkui-componentSnapshot.md) - [@ohos.arkui.componentSnapshot(组件截图)](js-apis-arkui-componentSnapshot.md)
- [@ohos.arkui.drawableDescriptor(DrawableDescriptor)](js-apis-arkui-drawableDescriptor.md) - [@ohos.arkui.drawableDescriptor (DrawableDescriptor)](js-apis-arkui-drawableDescriptor.md)
- [@ohos.curves (插值计算)](js-apis-curve.md) - [@ohos.curves (插值计算)](js-apis-curve.md)
- [@ohos.font(注册自定义字体)](js-apis-font.md)
- [@ohos.matrix4 (矩阵变换)](js-apis-matrix4.md) - [@ohos.matrix4 (矩阵变换)](js-apis-matrix4.md)
- [@ohos.mediaquery (媒体查询)](js-apis-mediaquery.md) - [@ohos.mediaquery (媒体查询)](js-apis-mediaquery.md)
- [@ohos.pluginComponent(PluginComponentManager)](js-apis-plugincomponent.md) - [@ohos.pluginComponent(PluginComponentManager)](js-apis-plugincomponent.md)
...@@ -192,7 +193,7 @@ ...@@ -192,7 +193,7 @@
- [@ohos.router (页面路由)](js-apis-router.md) - [@ohos.router (页面路由)](js-apis-router.md)
- [@ohos.measure (文本计算)](js-apis-measure.md) - [@ohos.measure (文本计算)](js-apis-measure.md)
- [@ohos.uiAppearance(用户界面外观)](js-apis-uiappearance.md) - [@ohos.uiAppearance(用户界面外观)](js-apis-uiappearance.md)
- 图形图像 - 图形图像
- [@ohos.animation.windowAnimationManager (窗口动画管理)](js-apis-windowAnimationManager.md) - [@ohos.animation.windowAnimationManager (窗口动画管理)](js-apis-windowAnimationManager.md)
- [@ohos.application.WindowExtensionAbility (窗口扩展能力)](js-apis-application-windowExtensionAbility.md) - [@ohos.application.WindowExtensionAbility (窗口扩展能力)](js-apis-application-windowExtensionAbility.md)
......
#@ohos.arkui.drawableDescriptor(DrawableDescriptor) # @ohos.arkui.drawableDescriptor (DrawableDescriptor)
本模块提供获取pixelMap的能力,包括前景、背景、蒙版和分层图标。 本模块提供获取pixelMap的能力,包括前景、背景、蒙版和分层图标。
......
...@@ -694,7 +694,7 @@ try { ...@@ -694,7 +694,7 @@ try {
``` ```
## bluetoothManager.setDevicePinCode<sup>10+</sup><a name="setDevicePinCode"></a> ## bluetoothManager.setDevicePinCode<sup>10+</sup><a name="setDevicePinCode-1"></a>
setDevicePinCode(device: string, code: string): Promise&lt;void&gt; setDevicePinCode(device: string, code: string): Promise&lt;void&gt;
......
...@@ -21,11 +21,11 @@ import cardEmulation from '@ohos.nfc.cardEmulation'; ...@@ -21,11 +21,11 @@ import cardEmulation from '@ohos.nfc.cardEmulation';
**系统能力:** SystemCapability.Communication.NFC.CardEmulation **系统能力:** SystemCapability.Communication.NFC.CardEmulation
| 名称 | 值 | 说明 | | 名称 | 值 | 说明 |
| -------- | -------- | -------- | | ---- | ---- | -------- |
| HCE | 0 | HCE 卡模拟。 | | HCE | 0 | HCE 卡模拟。 |
| UICC | 1 | SIM 卡模拟。 | | UICC | 1 | SIM 卡模拟。 |
| ESE | 2 | ESE卡模拟。 | | ESE | 2 | ESE卡模拟。 |
## CardType<sup>9+</sup> ## CardType<sup>9+</sup>
...@@ -33,10 +33,10 @@ import cardEmulation from '@ohos.nfc.cardEmulation'; ...@@ -33,10 +33,10 @@ import cardEmulation from '@ohos.nfc.cardEmulation';
**系统能力:** SystemCapability.Communication.NFC.CardEmulation **系统能力:** SystemCapability.Communication.NFC.CardEmulation
| 名称 | 值 | 说明 | | 名称 | 值 | 说明 |
| -------- | -------- | -------- | | ------- | --------- | ----------------- |
| PAYMENT | "payment" | 卡模拟应用所使用的业务是支付类型。 | | PAYMENT | "payment" | 卡模拟应用所使用的业务是支付类型。 |
| OTHER | "other" | 卡模拟应用所使用的业务是其他类型。 | | OTHER | "other" | 卡模拟应用所使用的业务是其他类型。 |
## isSupported ## isSupported
...@@ -51,15 +51,15 @@ isSupported(feature: number): boolean ...@@ -51,15 +51,15 @@ isSupported(feature: number): boolean
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | -------- | ---- | ----------------------- | | ------- | ------ | ---- | ---------------------------------------- |
| feature | number | 是 | 卡模拟类型值,详细请见[FeatureType](#featuretype)枚举值。 | | feature | number | 是 | 卡模拟类型值,详细请见[FeatureType](#featuretype)枚举值。 |
**返回值:** **返回值:**
| **类型** | **说明** | | **类型** | **说明** |
| -------- | -------- | | ------- | -------------------------------------- |
| boolean | true: 支持该类型卡模拟,&nbsp;false: 不支持该类型卡模拟。| | boolean | true: 支持该类型卡模拟,&nbsp;false: 不支持该类型卡模拟。 |
## hasHceCapability<sup>9+</sup> ## hasHceCapability<sup>9+</sup>
...@@ -73,9 +73,9 @@ hasHceCapability(): boolean ...@@ -73,9 +73,9 @@ hasHceCapability(): boolean
**返回值:** **返回值:**
| **类型** | **说明** | | **类型** | **说明** |
| -------- | -------- | | ------- | -------------------------------- |
| boolean | true: 支持HCE,&nbsp;false: 不支持HCE。| | boolean | true: 支持HCE,&nbsp;false: 不支持HCE。 |
## isDefaultService<sup>9+</sup> ## isDefaultService<sup>9+</sup>
...@@ -89,16 +89,16 @@ isDefaultService(elementName: ElementName, type: CardType): boolean ...@@ -89,16 +89,16 @@ isDefaultService(elementName: ElementName, type: CardType): boolean
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | -------- | ---- | ----------------------- | | ----------- | ---------------------------------------- | ---- | ----------------------- |
| elementName | [ElementName](js-apis-bundleManager-elementName.md#elementname) | 是 | 应用的描述,由Bundle名称和组件名称组成。 | | elementName | [ElementName](js-apis-bundleManager-elementName.md#elementname) | 是 | 应用的描述,由Bundle名称和组件名称组成。 |
| type | [CardType](#cardtype9) | 是 | 卡模拟业务类型。 | | type | [CardType](#cardtype9) | 是 | 卡模拟业务类型。 |
**返回值:** **返回值:**
| **类型** | **说明** | | **类型** | **说明** |
| -------- | -------- | | ------- | ------------------------------------ |
| boolean | true: 是默认支付应用,&nbsp;false: 不是默认支付应用。| | boolean | true: 是默认支付应用,&nbsp;false: 不是默认支付应用。 |
**示例:** **示例:**
...@@ -108,13 +108,11 @@ import cardEmulation from '@ohos.nfc.cardEmulation'; ...@@ -108,13 +108,11 @@ import cardEmulation from '@ohos.nfc.cardEmulation';
var isHceSupported = cardEmulation.isSupported(cardEmulation.FeatureType.HCE); var isHceSupported = cardEmulation.isSupported(cardEmulation.FeatureType.HCE);
if (!isHceSupported) { if (!isHceSupported) {
console.log('this device is not supported for HCE, ignore it.'); console.log('this device is not supported for HCE, ignore it.');
return;
} }
var hasHceCap = cardEmulation.hasHceCapability(); var hasHceCap = cardEmulation.hasHceCapability();
if (!hasHceCap) { if (!hasHceCap) {
console.log('this device hasHceCapability false, ignore it.'); console.log('this device hasHceCapability false, ignore it.');
return;
} }
var elementName = { var elementName = {
......
...@@ -186,7 +186,7 @@ CommonEvent.publishAsUser("event", userId, options, publishCB); ...@@ -186,7 +186,7 @@ CommonEvent.publishAsUser("event", userId, options, publishCB);
## CommonEvent.createSubscriber<sup>(deprecated)</sup> ## CommonEvent.createSubscriber<sup>(deprecated)</sup>
createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback<CommonEventSubscriber>): void createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback\<CommonEventSubscriber>): void
以回调形式创建订阅者。 以回调形式创建订阅者。
...@@ -229,7 +229,7 @@ CommonEvent.createSubscriber(subscribeInfo, createCB); ...@@ -229,7 +229,7 @@ CommonEvent.createSubscriber(subscribeInfo, createCB);
## CommonEvent.createSubscriber<sup>(deprecated)</sup> ## CommonEvent.createSubscriber<sup>(deprecated)</sup>
createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise<CommonEventSubscriber> createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise\<CommonEventSubscriber>
以Promise形式创建订阅者。 以Promise形式创建订阅者。
...@@ -270,7 +270,7 @@ CommonEvent.createSubscriber(subscribeInfo).then((commonEventSubscriber) => { ...@@ -270,7 +270,7 @@ CommonEvent.createSubscriber(subscribeInfo).then((commonEventSubscriber) => {
## CommonEvent.subscribe<sup>(deprecated)</sup> ## CommonEvent.subscribe<sup>(deprecated)</sup>
subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback<CommonEventData>): void subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback\<CommonEventData>): void
以回调形式订阅公共事件。 以回调形式订阅公共事件。
......
...@@ -562,7 +562,7 @@ setStaticSubscriberState(enable: boolean, callback: AsyncCallback\<void>): void; ...@@ -562,7 +562,7 @@ setStaticSubscriberState(enable: boolean, callback: AsyncCallback\<void>): void;
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------------------- | | ------ | ------ | ---- | -------------------------- |
| enable | boolean | 是 | 表示静态订阅事件使能状态。 true:使能 false:去使能。 | | enable | boolean | 是 | 表示静态订阅事件使能状态。 true:使能 false:去使能。 |
| callback | AsyncCallback<void> | 是 | 表示设置静态订阅事件使能状态的回调方法。 | | callback | AsyncCallback\<void> | 是 | 表示设置静态订阅事件使能状态的回调方法。 |
**错误码:** **错误码:**
......
# @ohos.multimodalInput.inputDeviceCooperate (键鼠穿越) # @ohos.multimodalInput.inputDeviceCooperate (键鼠穿越)(待停用)
键鼠穿越功能模块,提供两台或多台设备组网协同后键鼠共享能力,实现键鼠输入设备的跨设备协同操作。 键鼠穿越功能模块,提供两台或多台设备组网协同后键鼠共享能力,实现键鼠输入设备的跨设备协同操作。
......
# @ohos.font(注册自定义字体)
本模块提供注册自定义字体。
> **说明**
>
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```ts
import font from '@ohos.font'
```
## font.registerFont
registerFont(options: FontOptions): void
在字体管理中注册自定义字体。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | --------------------------- | ---- | ---------------------- |
| options | [FontOptions](#fontoptions) | 是 | 注册的自定义字体信息。 |
## FontOptions
| 名称 | 类型 | 必填 | 说明 |
| ---------- | ------ | ---- | ------------------------ |
| familyName | string | 是 | 设置注册的字体名称。 |
| familySrc | string | 是 | 设置注册字体文件的路径。 |
## 示例
```ts
// xxx.ets
import font from '@ohos.font';
@Entry
@Component
struct FontExample {
@State message: string = '你好,世界'
aboutToAppear() {
font.registerFont({
familyName: 'medium',
familySrc: '/font/medium.ttf'
})
}
build() {
Column() {
Text(this.message)
.align(Alignment.Center)
.fontSize(20)
.fontFamily('medium') // medium:注册自定义字体的名字
.height('100%')
}.width('100%')
}
}
```
...@@ -1702,7 +1702,7 @@ let delayTimes = imageSourceApi.getDelayTime(); ...@@ -1702,7 +1702,7 @@ let delayTimes = imageSourceApi.getDelayTime();
### getFrameCount<sup>10+</sup> ### getFrameCount<sup>10+</sup>
getFrameCount(callback: AsyncCallback<number>): void; getFrameCount(callback: AsyncCallback\<number>): void;
获取图像帧数,使用callback形式返回结果。 获取图像帧数,使用callback形式返回结果。
......
...@@ -1067,7 +1067,7 @@ resize(width: number, height: number): Promise\<void>; ...@@ -1067,7 +1067,7 @@ resize(width: number, height: number): Promise\<void>;
| 类型 | 说明 | | 类型 | 说明 |
| ------- | ------------------------------ | | ------- | ------------------------------ |
| Promise<void> | 无返回结果的Promise对象。 | | Promise\<void> | 无返回结果的Promise对象。 |
**示例:** **示例:**
...@@ -1139,7 +1139,7 @@ moveTo(x: number, y: number): Promise\<void> ...@@ -1139,7 +1139,7 @@ moveTo(x: number, y: number): Promise\<void>
| 类型 | 说明 | | 类型 | 说明 |
| ------- | ------------------------------ | | ------- | ------------------------------ |
| Promise<void> | 无返回结果的Promise对象。 | | Promise\<void> | 无返回结果的Promise对象。 |
**示例:** **示例:**
......
...@@ -460,7 +460,7 @@ removeAll(bundle: BundleOption, callback: AsyncCallback\<void\>): void ...@@ -460,7 +460,7 @@ removeAll(bundle: BundleOption, callback: AsyncCallback\<void\>): void
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ---------------------------- | | -------- | --------------------- | ---- | ---------------------------- |
| bundle | [BundleOption]((js-apis-inner-notification-notificationCommonDef.md#bundleoption)) | 是 | 指定应用的包信息。 | | bundle | [BundleOption](js-apis-inner-notification-notificationCommonDef.md#bundleoption) | 是 | 指定应用的包信息。 |
| callback | AsyncCallback\<void\> | 是 | 删除指定应用的所有通知回调函数。 | | callback | AsyncCallback\<void\> | 是 | 删除指定应用的所有通知回调函数。 |
**错误码:** **错误码:**
...@@ -548,7 +548,7 @@ removeAll(bundle?: BundleOption): Promise\<void\> ...@@ -548,7 +548,7 @@ removeAll(bundle?: BundleOption): Promise\<void\>
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | ------------ | ---- | ---------- | | ------ | ------------ | ---- | ---------- |
| bundle | [BundleOption]((js-apis-inner-notification-notificationCommonDef.md#bundleoption)) | 否 | 指定应用的包信息。 | | bundle | [BundleOption](js-apis-inner-notification-notificationCommonDef.md#bundleoption) | 否 | 指定应用的包信息。 |
**错误码:** **错误码:**
......
...@@ -4,7 +4,9 @@ ...@@ -4,7 +4,9 @@
> **说明:** > **说明:**
> >
> 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 > - 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
>
> - Menu组件需和[bindMenu](ts-universal-attributes-menu.md)或[bindContextMenu](ts-universal-attributes-menu.md)方法配合使用,不支持作为普通组件单独使用。
## 子组件 ## 子组件
......
...@@ -4,7 +4,9 @@ ...@@ -4,7 +4,9 @@
> **说明:** > **说明:**
> >
> 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 > - 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
>
> - CustomBuilder里不支持再使用bindMenu、bindContextMenu弹出菜单。多级菜单可使用[Menu组件](ts-basic-components-menu.md)。
## 属性 ## 属性
...@@ -163,4 +165,4 @@ struct ContextMenuExample { ...@@ -163,4 +165,4 @@ struct ContextMenuExample {
.bindContextMenu(this.MenuBuilder, ResponseType.RightClick) .bindContextMenu(this.MenuBuilder, ResponseType.RightClick)
} }
} }
``` ```
\ No newline at end of file
...@@ -5,19 +5,14 @@ ...@@ -5,19 +5,14 @@
HUKS提供为业务安全随机生成密钥的能力。通过HUKS生成的密钥,密钥的全生命周期明文不会出安全环境,能保证任何人都无法接触获取到密钥的明文。即使生成密钥的业务自身,后续也只能通过HUKS提供的接口请求执行密钥操作,获取操作结果,但无法接触到密钥自身。 HUKS提供为业务安全随机生成密钥的能力。通过HUKS生成的密钥,密钥的全生命周期明文不会出安全环境,能保证任何人都无法接触获取到密钥的明文。即使生成密钥的业务自身,后续也只能通过HUKS提供的接口请求执行密钥操作,获取操作结果,但无法接触到密钥自身。
**开发步骤**
**<font size=5>开发步骤</font>**
生成密钥时使用[huks.generateKeyItem(keyAlias,options,callback)](../reference/apis/js-apis-huks.md#huksgeneratekeyitem9)方法,传入keyAlias作为密钥别名,传入options包含该密钥的属性集,传入callback用于回调异步结果。关于接口的具体信息,可在[API参考文档](../reference/apis/js-apis-huks.md)中查看。 生成密钥时使用[huks.generateKeyItem(keyAlias,options,callback)](../reference/apis/js-apis-huks.md#huksgeneratekeyitem9)方法,传入keyAlias作为密钥别名,传入options包含该密钥的属性集,传入callback用于回调异步结果。关于接口的具体信息,可在[API参考文档](../reference/apis/js-apis-huks.md)中查看。
1. 确定密钥别名; 1. 确定密钥别名;
2. 初始化密钥属性集:通过[HuksParam](../reference/apis/js-apis-huks.md#huksparam)封装密钥属性,搭配Array组成密钥属性集,并赋值给[HuksOptions](../reference/apis/js-apis-huks.md#huksoptions)(properties字段),其中必须包含[HuksKeyAlg](../reference/apis/js-apis-huks.md#hukskeyalg),[HuksKeySize](../reference/apis/js-apis-huks.md#hukskeysize),[HuksKeyPurpose](../reference/apis/js-apis-huks.md#hukskeypurpose)属性; 2. 初始化密钥属性集:通过[HuksParam](../reference/apis/js-apis-huks.md#huksparam)封装密钥属性,搭配Array组成密钥属性集,并赋值给[HuksOptions](../reference/apis/js-apis-huks.md#huksoptions)(properties字段),其中必须包含[HuksKeyAlg](../reference/apis/js-apis-huks.md#hukskeyalg),[HuksKeySize](../reference/apis/js-apis-huks.md#hukskeysize),[HuksKeyPurpose](../reference/apis/js-apis-huks.md#hukskeypurpose)属性;
3. 将密钥别名与密钥参数集作为参数传入,生成密钥。 3. 将密钥别名与密钥参数集作为参数传入,生成密钥。
> **说明** > **说明**
> >
> 存储的 keyAlias 密钥别名最大为64字节 > 存储的 keyAlias 密钥别名最大为64字节
...@@ -227,9 +222,9 @@ try { ...@@ -227,9 +222,9 @@ try {
| 接口名 | 描述 | | 接口名 | 描述 |
| -------------------------------------- | ----------------------------| | -------------------------------------- | ----------------------------|
|generateKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<void>) : void| 生成新密钥| |generateKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<void>) : void| 生成新密钥|
|exportKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void| 导出密钥对的公钥| |exportKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksReturnResult>) : void| 导出密钥对的公钥|
|importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions, callback: AsyncCallback<void>) : void|导入加密密钥| |importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions, callback: AsyncCallback\<void>) : void|导入加密密钥|
|deleteKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<void>) : void|删除密钥| |deleteKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<void>) : void|删除密钥|
需要注意的是,导出密钥接口返回的公钥明文材料是按照**X.509**格式封装,导入加密密钥接口中的密钥材料需满足**Length<sub>Data</sub>-Data** 的格式封装。具体,应用需要申请一个Uint8Array按照以下表格中的顺序依次封装。 需要注意的是,导出密钥接口返回的公钥明文材料是按照**X.509**格式封装,导入加密密钥接口中的密钥材料需满足**Length<sub>Data</sub>-Data** 的格式封装。具体,应用需要申请一个Uint8Array按照以下表格中的顺序依次封装。
......
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
| 接口名 | 描述 | | 接口名 | 描述 |
| ------------------------------------------------------------ | ------------------------------------------------------- | | ------------------------------------------------------------ | ------------------------------------------------------- |
| createMessage(pdu: Array<number>, specification: string, callback: AsyncCallback<ShortMessage>): void | 基于协议数据单元(PDU)和指定的SMS协议创建SMS消息实例。 | | createMessage(pdu: Array\<number>, specification: string, callback: AsyncCallback\<ShortMessage>): void | 基于协议数据单元(PDU)和指定的SMS协议创建SMS消息实例。 |
| sendMessage(options: SendMessageOptions): void | 发送文本或数据SMS消息。 | | sendMessage(options: SendMessageOptions): void | 发送文本或数据SMS消息。 |
| getDefaultSmsSlotId(callback: AsyncCallback<number>): void | 获取用于发送短信的默认SIM卡。 | | getDefaultSmsSlotId(callback: AsyncCallback\<number>): void | 获取用于发送短信的默认SIM卡。 |
| setSmscAddr(slotId: number, smscAddr: string, callback: AsyncCallback<void>): void | 根据指定的插槽ID设置短信服务中心的地址。 | | setSmscAddr(slotId: number, smscAddr: string, callback: AsyncCallback\<void>): void | 根据指定的插槽ID设置短信服务中心的地址。 |
| getSmscAddr(slotId: number, callback: AsyncCallback<string>): void | 根据指定的插槽ID获取短信服务中心地址。 | | getSmscAddr(slotId: number, callback: AsyncCallback\<string>): void | 根据指定的插槽ID获取短信服务中心地址。 |
## 开发步骤 ## 开发步骤
......
...@@ -35,11 +35,11 @@ ...@@ -35,11 +35,11 @@
- 组件区域(蓝区方块):组件区域表明组件的大小,width、height属性设置该区域的大小。 - 组件区域(蓝区方块):组件区域表明组件的大小,width、height属性设置该区域的大小。
- 组件内容区(黄色方块):组件区域大小减去组件的Padding值,组件内容区大小会作为组件内容(或者子组件)进行大小测算时的布局测算限制。 - 组件内容区(黄色方块):组件区域大小减去组件的padding值,组件内容区大小会作为组件内容(或者子组件)进行大小测算时的布局测算限制。
- 组件内容(绿色方块):组件内容本身占用的大小,比如文本内容占用的大小。组件内容和组件内容区不一定匹配,比如设置了固定的width和height,此时组件内容区大小就是设置的width和height减去Padding值,但文本内容则是通过文本布局引擎测算后得到的大小,可能出现文本真实大小小于设置的组件内容区大小。当组件内容和组件内容区大小不一致时,align属性生效,定义组件内容在组件内容区的对齐方式,如居中对齐。 - 组件内容(绿色方块):组件内容本身占用的大小,比如文本内容占用的大小。组件内容和组件内容区不一定匹配,比如设置了固定的width和height,此时组件内容区大小就是设置的width和height减去padding值,但文本内容则是通过文本布局引擎测算后得到的大小,可能出现文本真实大小小于设置的组件内容区大小。当组件内容和组件内容区大小不一致时,align属性生效,定义组件内容在组件内容区的对齐方式,如居中对齐。
- 组件布局边界(虚线部分):组件通过Margin属性设置外边距时,组件布局边界就是组件区域加上Margin的大小。 - 组件布局边界(虚线部分):组件通过margin属性设置外边距时,组件布局边界就是组件区域加上margin的大小。
## 如何选择布局 ## 如何选择布局
......
...@@ -1182,6 +1182,7 @@ ...@@ -1182,6 +1182,7 @@
- [通知服务公共事件定义](reference/apis/common_event/commonEvent-ans.md) - [通知服务公共事件定义](reference/apis/common_event/commonEvent-ans.md)
- [资源调度子系统公共事件定义](reference/apis/common_event/commonEvent-resourceschedule.md) - [资源调度子系统公共事件定义](reference/apis/common_event/commonEvent-resourceschedule.md)
- [电话服务子系统公共事件定义](reference/apis/common_event/commonEvent-telephony.md) - [电话服务子系统公共事件定义](reference/apis/common_event/commonEvent-telephony.md)
- [USB子系统公共事件定义](reference/apis/common_event/commonEvent-usb.md)
- 包管理 - 包管理
- [@ohos.bundle.appControl (appControl模块)](reference/apis/js-apis-appControl.md) - [@ohos.bundle.appControl (appControl模块)](reference/apis/js-apis-appControl.md)
- [@ohos.bundle.bundleManager (bundleManager模块)](reference/apis/js-apis-bundleManager.md) - [@ohos.bundle.bundleManager (bundleManager模块)](reference/apis/js-apis-bundleManager.md)
...@@ -1214,7 +1215,7 @@ ...@@ -1214,7 +1215,7 @@
- UI界面 - UI界面
- [@ohos.animator (动画)](reference/apis/js-apis-animator.md) - [@ohos.animator (动画)](reference/apis/js-apis-animator.md)
- [@ohos.arkui.componentSnapshot(组件截图)](reference/apis/js-apis-arkui-componentSnapshot.md) - [@ohos.arkui.componentSnapshot(组件截图)](reference/apis/js-apis-arkui-componentSnapshot.md)
- [@ohos.arkui.drawableDescriptor(DrawableDescriptor)](reference/apis/js-apis-arkui-drawableDescriptor.md) - [@ohos.arkui.drawableDescriptor (DrawableDescriptor)](reference/apis/js-apis-arkui-drawableDescriptor.md)
- [@ohos.curves (插值计算)](reference/apis/js-apis-curve.md) - [@ohos.curves (插值计算)](reference/apis/js-apis-curve.md)
- [@ohos.matrix4 (矩阵变换)](reference/apis/js-apis-matrix4.md) - [@ohos.matrix4 (矩阵变换)](reference/apis/js-apis-matrix4.md)
- [@ohos.mediaquery (媒体查询)](reference/apis/js-apis-mediaquery.md) - [@ohos.mediaquery (媒体查询)](reference/apis/js-apis-mediaquery.md)
...@@ -1681,16 +1682,16 @@ ...@@ -1681,16 +1682,16 @@
- [OH_Huks_ParamSet](reference/native-apis/_o_h___huks___param_set.md) - [OH_Huks_ParamSet](reference/native-apis/_o_h___huks___param_set.md)
- [OH_Huks_PubKeyInfo](reference/native-apis/_o_h___huks___pub_key_info.md) - [OH_Huks_PubKeyInfo](reference/native-apis/_o_h___huks___pub_key_info.md)
- [OH_Huks_Result](reference/native-apis/_o_h___huks___result.md) - [OH_Huks_Result](reference/native-apis/_o_h___huks___result.md)
- 标准库 - 标准库
- [Node_API](reference/native-lib/third_party_napi/napi.md) - [Node_API](reference/native-lib/third_party_napi/napi.md)
- [libuv](reference/native-lib/third_party_libuv/libuv.md) - [libuv](reference/native-lib/third_party_libuv/libuv.md)
- [支持的标准库介绍](reference/native-lib/third_party_libc/musl.md) - [支持的标准库介绍](reference/native-lib/third_party_libc/musl.md)
- 附录 - 附录
- [Native api中没有导出的符号列表](reference/native-lib/third_party_libc/musl-peculiar-symbol.md) - [Native api中没有导出的符号列表](reference/native-lib/third_party_libc/musl-peculiar-symbol.md)
- [Native api中由于权限管控可能调用失败的符号列表](reference/native-lib/third_party_libc/musl-permission-control-symbol.md) - [Native api中由于权限管控可能调用失败的符号列表](reference/native-lib/third_party_libc/musl-permission-control-symbol.md)
- [Native api中导出的EGL符号列表](reference/native-lib/third_party_opengl/egl-symbol.md) - [Native api中导出的EGL符号列表](reference/native-lib/third_party_opengl/egl-symbol.md)
- [Native api中导出的OpenGL ES 3.0符号列表](reference/native-lib/third_party_opengl/openglesv3-symbol.md) - [Native api中导出的OpenGL ES 3.0符号列表](reference/native-lib/third_party_opengl/openglesv3-symbol.md)
- [Native api中支持的OpenSL ES接口列表](reference/native-lib/third_party_opensles/opensles.md) - [Native api中支持的OpenSL ES接口列表](reference/native-lib/third_party_opensles/opensles.md)
- 常见问题 - 常见问题
- [如何编译full-SDK](faqs/full-sdk-compile-guide.md) - [如何编译full-SDK](faqs/full-sdk-compile-guide.md)
- [如何替换full-SDK](faqs/full-sdk-switch-guide.md) - [如何替换full-SDK](faqs/full-sdk-switch-guide.md)
...@@ -1701,7 +1702,7 @@ ...@@ -1701,7 +1702,7 @@
- [ArkUI布局开发常见问题(ArkTS)](faqs/faqs-arkui-layout.md) - [ArkUI布局开发常见问题(ArkTS)](faqs/faqs-arkui-layout.md)
- [ArkUI路由/导航开发常见问题(ArkTS)](faqs/faqs-arkui-route-nav.md) - [ArkUI路由/导航开发常见问题(ArkTS)](faqs/faqs-arkui-route-nav.md)
- [ArkUI动画/交互事件开发常见问题(ArkTS)](faqs/faqs-arkui-animation-interactive-event.md) - [ArkUI动画/交互事件开发常见问题(ArkTS)](faqs/faqs-arkui-animation-interactive-event.md)
-[ArkUI框架开发常见问题(JS)](faqs/faqs-arkui-js.md) - [ArkUI框架开发常见问题(JS)](faqs/faqs-arkui-js.md)
- [Web开发常见问题](faqs/faqs-arkui-web.md) - [Web开发常见问题](faqs/faqs-arkui-web.md)
- [包管理开发常见问题](faqs/faqs-bundle-management.md) - [包管理开发常见问题](faqs/faqs-bundle-management.md)
- [资源管理开发常见问题](faqs/faqs-globalization.md) - [资源管理开发常见问题](faqs/faqs-globalization.md)
......
...@@ -500,7 +500,7 @@ function foo() { ...@@ -500,7 +500,7 @@ function foo() {
参见:[@typescript-eslint/no-this-alias](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/no-this-alias.md) 参见:[@typescript-eslint/no-this-alias](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/no-this-alias.md)
ESLint的描述更加严苛,我们认为this不应该在任情况下赋值给一个变量。 ESLint的描述更加严苛,我们认为this不应该在任情况下赋值给一个变量。
# 类与对象 # 类与对象
...@@ -622,7 +622,7 @@ function foo() { ...@@ -622,7 +622,7 @@ function foo() {
**【描述】** **【描述】**
因为async function的返回值总是封装在Promise.resolve,return await实际上并没有做任何事情,只是在Promise resolve或reject之前增加了额外的时间。唯一有效是,如果try/catch语句中使用return await来捕获另一个基于Promise的函数的错误,则会出现异常 因为async function的返回值总是封装在Promise.resolve,return await实际上并没有做任何事情,只是在Promise resolve或reject之前增加了额外的时间。唯一有效的情况是,在try/catch语句中使用return await来捕获另一个基于Promise的函数的错误
**【反例】** **【反例】**
...@@ -820,7 +820,7 @@ export type { ButtonProps }; ...@@ -820,7 +820,7 @@ export type { ButtonProps };
**【描述】** **【描述】**
如果导入类型(type),将导入类型和导其他对象分开写。 如果导入类型(type),将导入类型和导其他对象分开写。
**【反例】** **【反例】**
......
...@@ -3,4 +3,4 @@ ...@@ -3,4 +3,4 @@
布局不是静态固定的,当显示环境发生变化时,如横竖屏切换、调节字体大小、应用分屏,要及时调整内容的布局方式以适应变化。本章提供了布局基础的概念和介绍。详见[布局基础](grid-system.md) 布局不是静态固定的,当显示环境发生变化时,如横竖屏切换、调节字体大小、应用分屏,要及时调整内容的布局方式以适应变化。本章提供了布局基础的概念和介绍。详见[布局基础](grid-system.md)
了解布局的基础概念后,通过调用栅格系统、自适应布局和响应式布局能力就可以让内容更好地适配显示环境的变化。综合运用布局基础能力,可实现常用页面结构的多设备适配。详见[布局基础运案例](ui-layout-cases.md) 了解布局的基础概念后,通过调用栅格系统、自适应布局和响应式布局能力就可以让内容更好地适配显示环境的变化。综合运用布局基础能力,可实现常用页面结构的多设备适配。详见[布局基础运案例](ui-layout-cases.md)
...@@ -136,14 +136,11 @@ ...@@ -136,14 +136,11 @@
| ISSUE | 问题描述 | 影响 | 计划解决日期 | | ISSUE | 问题描述 | 影响 | 计划解决日期 |
| -------- | -------- | -------- | -------- | | -------- | -------- | -------- | -------- |
| I6B4U3 | 进程com.ohos.launcher低概率(3/10)引发appfreeze | 安装应用加多,安装超过40个应用,且内存较小的设备场景下,低概率出现appfreeze,但桌面功能正常,不影响整体功能和使用 | 2023年5月30日 | | I6B4U3 | 进程com.ohos.launcher低概率(3/10)引发appfreeze | 安装应用加多,安装超过40个应用,且内存较小的设备场景下,低概率出现appfreeze,但桌面功能正常,不影响整体功能和使用 | 2023年6月15日 |
| I6SXBI | 进程ohos.samples.distributedcalc下的libdistributeddata.z.so低概率导致cppcrash | 计算器应用快速启动和退出场景,启动后1秒内退出,导致JS对象读取数据库成功前JS对象被析构,只有LOG报错但用户无感知,影响可控 | 2023年6月30日 | | I6SXBI | 进程ohos.samples.distributedcalc下的libdistributeddata.z.so低概率导致cppcrash | 计算器应用快速启动和退出场景,启动后1秒内退出,导致JS对象读取数据库成功前JS对象被析构,只有LOG报错但用户无感知,影响可控 | 2023年7月15日 |
| I6TRE6 | 进程com.ohos.contacts下的com.ohos.contacts线程导致libdatashare_consumer.z.so低概率出现crash。 | 联系人应用快速启动和退出场景,发现在启动后600ms内退出,联系人进程低概率出现crash,出现crash后联系人进程会被重新拉起,影响可控。 | 2023年6月30日 | | I6TRE6 | 进程com.ohos.contacts下的com.ohos.contacts线程导致libdatashare_consumer.z.so低概率出现crash。 | 联系人应用快速启动和退出场景,发现在启动后600ms内退出,联系人进程低概率出现crash,出现crash后联系人进程会被重新拉起,影响可控。 | 2023年7月15日 |
| I6SMQA | 浏览器加载微博,滑动过程中出现抖动。 | 通过浏览器加载微博web网页后,快速滑动时,内容会闪现未加载,然后很快能加载出来,影响滑动体验。 | 2023年6月30日 | | I6SMQA | 浏览器加载微博,滑动过程中出现抖动。 | 通过浏览器加载微博web网页后,快速滑动时,内容会闪现未加载,然后很快能加载出来,影响滑动体验。 | 2023年6月15日 |
| I72P5E | 反复进入大图浏览界面后返回,导致libace.z.so出现内存泄露 | 从图库进入大图浏览界面后返回,ArkUI模块每次泄露10kb,在应用上点击返回后,泄露问题消失。影响可控。 | 2023年6月30日 | | I72P5E | 反复进入大图浏览界面后返回,导致libace.z.so出现内存泄露 | 从图库进入大图浏览界面后返回,ArkUI模块每次泄露10kb,在应用上点击返回后,泄露问题消失。影响可控。 | 2023年7月15日 |
| I72P5I | 反复进入某相册的图片宫格浏览界面,导致libace.z.so出现内存泄露 | 进入某相册的图片宫格浏览界面后返回,ArkUI每次泄露19kb,在应用上点击返回后,泄露问题消失。影响可控。 | 2023年6月30日 | | I72P5I | 反复进入某相册的图片宫格浏览界面,导致libace.z.so出现内存泄露 | 进入某相册的图片宫格浏览界面后返回,ArkUI每次泄露19kb,在应用上点击返回后,泄露问题消失。影响可控。 | 2023年7月15日 |
| I76N0Y | 反复在dock栏添加/移除应用,导致libace.z.so出现内存泄露 | 移动卡片到合法区域,ArkUI每次泄露99kb,非常用场景,应用重启可泄露问题消失。影响可控。 | 2023年6月30日 | | I76N0Y | 反复在dock栏添加/移除应用,导致libace.z.so出现内存泄露 | 移动卡片到合法区域,ArkUI每次泄露99kb,非常用场景,应用重启可泄露问题消失。影响可控。 | 2023年7月15日 |
| I6XHE7 | NAPIRemoteObject模块内存泄露 | JS应用调用IPC需要建立NAPIRemoteObject对象进程通信,创建一次可以循环使用,建立一次后泄露1.2kb,应用不需要反复创建新对象,泄露量可控,应用进程退出会释放掉内存。 | 2023年6月30日 | | I6XHE7 | NAPIRemoteObject模块内存泄露 | JS应用调用IPC需要建立NAPIRemoteObject对象进程通信,创建一次可以循环使用,建立一次后泄露1.2kb,应用不需要反复创建新对象,泄露量可控,应用进程退出会释放掉内存。 | 2023年7月15日 |
<!--no_check-->
\ No newline at end of file
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
- [时钟开发示例](time-styles-shift.md) - [时钟开发示例](time-styles-shift.md)
- [弹簧动画开发](how-to-develop-spring-animation.md) - [弹簧动画开发](how-to-develop-spring-animation.md)
- [水波纹动画开发](water-wave-animation.md) - [水波纹动画开发](water-wave-animation.md)
- [如何使用OpenGL实现3D图形](how-to-use-opengl-to-draw-3d-graphics.md)
### 网络管理 ### 网络管理
- [如何请求并加载网络图片](how-to-load-images-from-internet.md) - [如何请求并加载网络图片](how-to-load-images-from-internet.md)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册