提交 29e7074f 编写于 作者: A Annie_wang
上级 6a0b318c
......@@ -431,6 +431,7 @@
- [@ohos.enterprise.EnterpriseAdminExtensionAbility (EnterpriseAdminExtensionAbility)](js-apis-EnterpriseAdminExtensionAbility.md)
- [@ohos.enterprise.networkManager (Network Management)](js-apis-enterprise-networkManager.md)
- [@ohos.enterprise.restrictions (Restrictions)](js-apis-enterprise-restrictions.md)
- [@ohos.enterprise.usbManager (USB Management)](js-apis-enterprise-usbManager.md)
- [@ohos.enterprise.wifiManager (Wi-Fi Management)](js-apis-enterprise-wifiManager.md)
- Common Library
......
......@@ -12,12 +12,12 @@ OpenHarmony provides Enterprise Device Management APIs to support enterprise API
- Only the stage model is supported.
### Environment Setup
- [Download DevEco Studio](https://developer.harmonyos.com/en/develop/deveco-studio#download) and set it up as instructed on the official website.
- [Download ohos-sdk-full](../../../release-notes/OpenHarmony-v3.2-beta2.md#acquiring-source-code-from-mirrors).
- DevEco Studio: Download DevEco Studio from its official website and perform related configuration.
- ohos-sdk-full: Obtain ohos-sdk-full. For details, see [Replacing Full SDK](../../faqs/full-sdk-switch-guide.md).
### How to Develop
1. Use DevEco Studio to create a project and [switch to full-sdk](../../faqs/full-sdk-switch-guide.md).
1. Use DevEco Studio to create a project and replace the full SDK.
2. In the [HarmonyAppProvision file](../../security/accesstoken-overview.md#application-apls), set the **app-feature** field to **hos_system_app**.
......@@ -27,11 +27,13 @@ OpenHarmony provides Enterprise Device Management APIs to support enterprise API
### API Reference
To implement network management and Wi-Fi management, see:
> **NOTE**
>
> - For details about the APIs, see:
- [@ohos.enterprise.accountManager (Account Management)](js-apis-enterprise-accountManager.md)
- [@ohos.enterprise.adminManager (Enterprise Device Management)](js-apis-enterprise-adminManager.md)
- [@ohos.enterprise.applicationManager (Application Management)](js-apis-enterprise-applicationManager.md)
- [@ohos.enterprise.browser (Browser Management)](js-apis-enterprise-browser.md)
- [@ohos.enterprise.bundleManager (Bundle Management)](js-apis-enterprise-bundleManager.md)
- [@ohos.enterprise.dateTimeManager (System Time Management)](js-apis-enterprise-dateTimeManager.md)
- [@ohos.enterprise.deviceControl (Device Control Management)](js-apis-enterprise-deviceControl.md)
......@@ -40,4 +42,5 @@ To implement network management and Wi-Fi management, see:
- [@ohos.enterprise.EnterpriseAdminExtensionAbility (EnterpriseAdminExtensionAbility)](js-apis-EnterpriseAdminExtensionAbility.md)
- [@ohos.enterprise.networkManager (Network Management)](js-apis-enterprise-networkManager.md)
- [@ohos.enterprise.restrictions (Restrictions)](js-apis-enterprise-restrictions.md)
- [@ohos.enterprise.usbManager (USB Management)](js-apis-enterprise-usbManager.md)
- [@ohos.enterprise.wifiManager (Wi-Fi Management)](js-apis-enterprise-wifiManager.md)
......@@ -6,7 +6,9 @@ The **deviceSettings** module provides APIs for setting enterprise devices, incl
>
> The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.
>
> The APIs provided by this module apply only to the [device administrator applications](enterpriseDeviceManagement-overview.md#basic-concepts). Before calling the APIs, you must enable the device administrator application(js-apis-enterprise-adminManager.md#adminmanagerenableadmin).
> The APIs of this module can be used only in the stage model.
>
> The APIs provided by this module can be called only by a [device administrator application](enterpriseDeviceManagement-overview.md#basic-concepts) that is [enabled](js-apis-enterprise-adminManager.md#adminmanagerenableadmin).
## Modules to Import
......@@ -18,7 +20,7 @@ import deviceSettings from '@ohos.enterprise.deviceSettings';
getScreenOffTime(admin: Want, callback: AsyncCallback<number>): void
Obtains the screen-off time of a device through the specified device administrator application. This API uses an asynchronous callback to return the result.
Obtains the device screen-off time through the specified device administrator application. This API uses an asynchronous callback to return the result.
**Required permissions**: ohos.permission.ENTERPRISE_GET_SETTINGS
......@@ -63,7 +65,7 @@ deviceSettings.getScreenOffTime(wantTemp, (err, result) => {
getScreenOffTime(admin: Want): Promise<number>
Obtains the screen-off time of a device through the specified device administrator application. This API uses a promise to return the result.
Obtains the device screen-off time through the specified device administrator application. This API uses a promise to return the result.
**Required permissions**: ohos.permission.ENTERPRISE_GET_SETTINGS
......@@ -106,3 +108,232 @@ deviceSettings.getScreenOffTime(wantTemp).then((result) => {
console.error(`Failed to get screen off time. Code: ${err.code}, message: ${err.message}`);
});
```
## deviceSettings.installUserCertificate
installUserCertificate(admin: Want, certificate: CertBlob, callback: AsyncCallback<string>): void
Installs a user certificate through the specified device administrator application. This API uses an asynchronous callback to return the result.
**Required permissions**: ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE
**System capability**: SystemCapability.Customization.EnterpriseDeviceManager
**System API**: This is a system API.
**Parameters**
| Name | Type | Mandatory | Description |
| -------- | ---------------------------------------- | ---- | ------------------------------- |
| admin | [Want](js-apis-app-ability-want.md) | Yes | Device administrator application. |
| certificate | [CertBlob](#certblob) | Yes | Information about the certificate to install. |
| callback | AsyncCallback<string> | Yes | Callback invoked to return the result. If the operation is successful, **err** is **null**. Otherwise, **err** is an error object. |
**Error codes**
For details about the error codes, see [Enterprise Device Management Error Codes](../errorcodes/errorcode-enterpriseDeviceManager.md).
| ID| Error Message |
| ------- | ---------------------------------------------------------------------------- |
| 9200001 | the application is not an administrator of the device. |
| 9200002 | the administrator application does not have permission to manage the device. |
| 9201001 | manage certificate failed |
**Example**
```js
let wantTemp = {
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility',
};
var certFileArray: Uint8Array;
// The variable context needs to be initialized in MainAbility's onCreate callback function
// test.cer needs to be placed in the rawfile directory
await globalThis.context.resourceManager.getRawFileContent("test.cer")
.then(value => {
certFileArray = value
})
.catch(error => {
console.error(`Failed to get row file content. message: ${error.message}`);
return
});
new Promise((resolve, reject) => {
deviceSettings.installUserCertificate(wantTemp, {inData: certFileArray, alias: "cert_alias_xts"}, (err, result) => {
if (err) {
console.error(`Failed to install user certificate. Code: ${err.code}, message: ${err.message}`);
} else{
console.info(`Succeeded in installing user certificate, result : ${JSON.stringify(result)}`);
}
});
});
```
## deviceSettings.installUserCertificate
installUserCertificate(admin: Want, certificate: CertBlob): Promise<string>
Installs a user certificate through the specified device administrator application. This API uses a promise to return the result.
**Required permissions**: ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE
**System capability**: SystemCapability.Customization.EnterpriseDeviceManager
**System API**: This is a system API.
**Parameters**
| Name | Type | Mandatory | Description |
| ----- | ----------------------------------- | ---- | ------- |
| admin | [Want](js-apis-app-ability-want.md) | Yes | Device administrator application.|
| certificate | [CertBlob](#certblob) | Yes | Information about the certificate to install. |
**Return value**
| Type | Description |
| --------------------- | ------------------------- |
| Promise<string> | Promise used to return the URI of the installed certificate. This URI can be used to uninstall the certificate.|
**Error codes**
For details about the error codes, see [Enterprise Device Management Error Codes](../errorcodes/errorcode-enterpriseDeviceManager.md).
| ID| Error Message |
| ------- | ---------------------------------------------------------------------------- |
| 9200001 | the application is not an administrator of the device. |
| 9200002 | the administrator application does not have permission to manage the device. |
| 9201001 | manage certificate failed |
**Example**
```js
let wantTemp = {
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility',
};
var certFileArray: Uint8Array
// The variable context needs to be initialized in MainAbility's onCreate callback function
// test.cer needs to be placed in the rawfile directory
await globalThis.context.resourceManager.getRawFileContent("test.cer")
.then(data => {
certFileArray = data
}).catch(error => {
console.log('getRawFileContent error' + error)
return
})
deviceSettings.installUserCertificate(wantTemp, { inData: certFileArray, alias: "cert_alias_xts" })
.then((result) => {
console.info(`Succeeded in installing user certificate, result : ${JSON.stringify(result)}`);
}).catch(err => {
console.error(`Failed to install user certificate. Code: ${err.code}, message: ${err.message}`);
})
```
## CertBlob
Represents the certificate information.
**System capability**: SystemCapability.Customization.EnterpriseDeviceManager
**System API**: This is a system API.
| Name | Type | Mandatory| Description |
| ----------- | --------| ----- | ------------------------------- |
| inData | Uint8Array | Yes| Binary content of the certificate.|
| alias | string | Yes| Certificate alias.|
## deviceSettings.uninstallUserCertificate
uninstallUserCertificate(admin: Want, certUri: string, callback: AsyncCallback<void>): void
Uninstalls a user certificate through the specified device administrator application. This API uses an asynchronous callback to return the result.
**Required permissions**: ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE
**System capability**: SystemCapability.Customization.EnterpriseDeviceManager
**System API**: This is a system API.
**Parameters**
| Name | Type | Mandatory | Description |
| -------- | ---------------------------------------- | ---- | ------------------------------- |
| admin | [Want](js-apis-app-ability-want.md) | Yes | Device administrator application. |
| certUri | string | Yes | Certificate URI, which is returned by **installUserCertificate()**. |
| callback | AsyncCallback<void> | Yes | Callback invoked to return the result. If the operation is successful, **err** is **null**. Otherwise, **err** is an error object. |
**Error codes**
For details about the error codes, see [Enterprise Device Management Error Codes](../errorcodes/errorcode-enterpriseDeviceManager.md).
| ID| Error Message |
| ------- | ---------------------------------------------------------------------------- |
| 9200001 | the application is not an administrator of the device. |
| 9200002 | the administrator application does not have permission to manage the device. |
| 9201001 | manage certificate failed |
**Example**
```js
let wantTemp = {
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility',
};
let aliasStr = "certName"
deviceSettings.uninstallUserCertificate(wantTemp, aliasStr, (err) => {
if (err) {
console.error(`Failed to uninstall user certificate. Code: ${err.code}, message: ${err.message}`);
return;
}
console.info(`Succeeded in uninstalling user certificate`);
});
```
## deviceSettings.uninstallUserCertificate
uninstallUserCertificate(admin: Want, certUri: string): Promise<void>
Uninstalls a user certificate through the specified device administrator application. This API uses a promise to return the result.
**Required permissions**: ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE
**System capability**: SystemCapability.Customization.EnterpriseDeviceManager
**System API**: This is a system API.
**Parameters**
| Name | Type | Mandatory | Description |
| ----- | ----------------------------------- | ---- | ------- |
| admin | [Want](js-apis-app-ability-want.md) | Yes | Device administrator application.|
| certUri | string | Yes | Certificate URI, which is returned by **installUserCertificate()**. |
**Return value**
| Type | Description |
| --------------------- | ------------------------- |
| Promise<void> | Promise that returns no value. An error object will be thrown if the operation fails.|
**Error codes**
For details about the error codes, see [Enterprise Device Management Error Codes](../errorcodes/errorcode-enterpriseDeviceManager.md).
| ID| Error Message |
| ------- | ---------------------------------------------------------------------------- |
| 9200001 | the application is not an administrator of the device. |
| 9200002 | the administrator application does not have permission to manage the device. |
| 9201001 | manage certificate failed |
**Example**
```js
let wantTemp = {
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility',
};
let aliasStr = "certName"
deviceSettings.uninstallUserCertificate(wantTemp, aliasStr).then(() => {
console.info(`Succeeded in uninstalling user certificate`);
}).catch((err) => {
console.error(`Failed to uninstall user certificate. Code is ${err.code}, message is ${err.message}`);
});
```
# @ohos.enterprise.usbManager (USB Management)
The **usbManager** module provides APIs for USB management.
> **NOTE**
>
> The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.
>
> The APIs of this module can be used only in the stage model.
>
> The APIs provided by this module can be called only by a [device administrator application](enterpriseDeviceManagement-overview.md#basic-concepts) that is [enabled](js-apis-enterprise-adminManager.md#adminmanagerenableadmin).
## Modules to Import
```js
import usbManager from '@ohos.enterprise.usbManager'
```
## usbManager.setUsbPolicy
setUsbPolicy(admin: Want, usbPolicy: UsbPolicy, callback: AsyncCallback\<void>): void
Sets the USB read/write policy through the specified device administrator application. This API uses an asynchronous callback to return the result.
Required permissions: ohos.permission.ENTERPRISE_MANAGE_USB
**System capability**: SystemCapability.Customization.EnterpriseDeviceManager
**System API**: This is a system API.
**Parameters**
| Name | Type | Mandatory | Description |
| ----- | ----------------------------------- | ---- | ------- |
| admin | [Want](js-apis-app-ability-want.md) | Yes | Device administrator application.|
| usbPolicy | [UsbPolicy](#usbpolicy) | Yes| USB read/write policy to set.|
| callback | AsyncCallback\<void> | Yes| Callback invoked to return the result. If the operation is successful, **err** is **null**. Otherwise, **err** is an error object.|
**Error codes**
For details about the error codes, see [Enterprise Device Management Error Codes](../errorcodes/errorcode-enterpriseDeviceManager.md).
| ID| Error Message |
| ------- | ---------------------------------------------------------------------------- |
| 9200001 | the application is not an administrator of the device. |
| 9200002 | the administrator application does not have permission to manage the device. |
**Example**
```js
let wantTemp = {
bundleName: 'bundleName',
abilityName: 'abilityName',
};
let policy = usbManager.UsbPolicy.READ_WRITE
usbManager.setUsbPolicy(wantTemp, policy, (err) => {
if (err) {
console.error(`Failed to set usb policy. Code is ${err.code}, message is ${err.message}`);
return;
}
console.info('Succeeded in setting usb policy');
})
```
## usbManager.setUsbPolicy
setUsbPolicy(admin: Want, usbPolicy: UsbPolicy): Promise\<void>
Sets the USB read/write policy through the specified device administrator application. This API uses a promise to return the result.
Required permissions: ohos.permission.ENTERPRISE_MANAGE_USB
**System capability**: SystemCapability.Customization.EnterpriseDeviceManager
**System API**: This is a system API.
**Parameters**
| Name | Type | Mandatory | Description |
| ----- | ----------------------------------- | ---- | ------- |
| admin | [Want](js-apis-app-ability-want.md) | Yes | Device administrator application.|
| usbPolicy | [UsbPolicy](#usbpolicy) | Yes| USB read/write policy to set.|
**Return value**
| Type | Description |
| ----- | ----------------------------------- |
| Promise\<void> | Promise that returns no value. An error object will be thrown if the operation fails.|
**Error codes**
For details about the error codes, see [Enterprise Device Management Error Codes](../errorcodes/errorcode-enterpriseDeviceManager.md).
| ID| Error Message |
| ------- | ---------------------------------------------------------------------------- |
| 9200001 | the application is not an administrator of the device. |
| 9200002 | the administrator application does not have permission to manage the device. |
**Example**
```js
let wantTemp = {
bundleName: 'bundleName',
abilityName: 'abilityName',
};
let policy = usbManager.UsbPolicy.READ_WRITE
usbManager.setUsbPolicy(wantTemp, policy).then(() => {
console.info('Succeeded in setting usb policy');
}).catch((err) => {
console.error(`Failed to set usb policy. Code is ${err.code}, message is ${err.message}`);
})
```
## UsbPolicy
Enumerates the USB read/write policies.
**System capability**: SystemCapability.Customization.EnterpriseDeviceManager
**System API**: This is a system API.
| Name| Value| Description|
| -------- | -------- | -------- |
| READ_WRITE | 0 | The USB is readable and writable.|
| READ_ONLY | 1 | The USB is read-only.|
......@@ -116,8 +116,8 @@ For details about the error codes, see [File Management Error Codes](../errorcod
```js
let gallerySync = new cloudSync.GallerySync();
gallerySync.on('progress', (pg: SyncProgress) => {
console.info("syncState: " + pg.syncState);
gallerySync.on('progress', (pg: cloudSync.SyncProgress) => {
console.info("syncState: " + pg.state);
});
```
......@@ -153,8 +153,8 @@ For details about the error codes, see [File Management Error Codes](../errorcod
```js
let gallerySync = new cloudSync.GallerySync();
gallerySync.on('progress', (pg: SyncProgress) => {
console.info("syncState: " + pg.syncState);
gallerySync.on('progress', (pg: cloudSync.SyncProgress) => {
console.info("syncState: " + pg.state);
});
gallerySync.off('progress');
......@@ -194,8 +194,8 @@ For details about the error codes, see [File Management Error Codes](../errorcod
```js
let gallerySync = new cloudSync.GallerySync();
gallerySync.on('progress', (pg: SyncProgress) => {
console.info("syncState: " + pg.syncState);
gallerySync.on('progress', (pg: cloudSync.SyncProgress) => {
console.info("syncState: " + pg.state);
});
gallerySync.start().then(function() {
......@@ -411,7 +411,7 @@ For details about the error codes, see [File Management Error Codes](../errorcod
```js
let download = new cloudSync.Download();
download.on('progress', (pg: DownloadProgress) => {
download.on('progress', (pg: cloudSync.DownloadProgress) => {
console.info("download state: " + pg.state);
});
```
......@@ -448,7 +448,7 @@ For details about the error codes, see [File Management Error Codes](../errorcod
```js
let download = new cloudSync.Download();
download.on('progress', (pg: DownloadProgress) => {
download.on('progress', (pg: cloudSync.DownloadProgress) => {
console.info("download state:" + pg.state);
});
......@@ -481,12 +481,13 @@ Starts to download a cloud file. This API uses a promise to return the result.
```js
let download = new cloudSync.Download();
let uri: string = "file:///media/Photo/1";
download.on('progress', (pg: DownloadProgress) => {
download.on('progress', (pg: cloudSync.DownloadProgress) => {
console.info("download state:" + pg.state);
});
download.start().then(function() {
download.start(uri).then(function() {
console.info("start download successfully");
}).catch(function(err) {
console.info("start download failed with error message: " + err.message + ", error code: " + err.code);
......@@ -538,8 +539,9 @@ For details about the error codes, see [File Management Error Codes](../errorcod
```js
let download = new cloudSync.Download();
let uri: string = "file:///media/Photo/1";
download.start((err) => {
download.start(uri, (err) => {
if (err) {
console.info("start download failed with error message: " + err.message + ", error code: " + err.code);
} else {
......@@ -588,8 +590,9 @@ For details about the error codes, see [File Management Error Codes](../errorcod
```js
let download = new cloudSync.Download();
let uri: string = "file:///media/Photo/1";
download.stop().then(function() {
download.stop(uri).then(function() {
console.info("stop download successfully");
}).catch(function(err) {
console.info("stop download failed with error message: " + err.message + ", error code: " + err.code);
......@@ -631,8 +634,9 @@ For details about the error codes, see [File Management Error Codes](../errorcod
```js
let download = new cloudSync.Download();
let uri: string = "file:///media/Photo/1";
download.stop((err) => {
download.stop(uri, (err) => {
if (err) {
console.info("stop download failed with error message: " + err.message + ", error code: " + err.code);
} else {
......
......@@ -426,7 +426,7 @@ Clears the cloud data locally. This API uses an asynchronous callback to return
| ---------- | ------ | ---- | ---- |
| accountId | string | Yes | Account ID.|
| appActions | object | Yes | Action to take. **bundleName** indicates the application bundle to clear, and [Action](#action) indicates the action to take.|
| callback | AsyncCallback&lt;void&gt; | Yes | Callback invoked to return the result.|
| callback | AsyncCallback&lt;void&gt; | Yes | Callback invoked to clear the cloud data locally.|
**Error codes**
......
......@@ -482,6 +482,96 @@ Obtains **TagInfo** from **Want**, which is initialized by the NFC service and c
| ------------------- | -------------------------------------------- |
| [TagInfo](#taginfo) | **TagInfo** object obtained.|
## tag.registerForegroundDispatch<sup>10+</sup>
registerForegroundDispatch(elementName: [ElementName](js-apis-bundleManager-elementName.md), discTech: number[], callback: AsyncCallback&lt;[TagInfo](#taginfo)&gt;): void;
Registers listening for the card reading events of an NFC tag foreground application. You can set the supported tag technologies in **discTech**, and obtain the [TagInfo](#taginfo) read in a callback. <br>This API must be used with [tag.unregisterForegroundDispatch](#tagunregisterforegrounddispatch10) in pairs. The registered event listening must be unregistered before the page exits the foreground or the page is destroyed.
**Required permissions**: ohos.permission.NFC_TAG
**System capability**: SystemCapability.Communication.NFC.Tag
**Parameters**
| Name | Type | Mandatory| Description |
| ------------ | -------- | ---- | ------------------------------------------------------- |
| elementName | [ElementName](js-apis-bundleManager-elementName.md) | Yes | Information about the application page. It must contain at least the **bundleName**, **abilityName**, and **moduleName**. |
| discTech | number[] | Yes | Technologies supported by the foreground dispatch system. Each number indicates the constant value of the supported technology. Based on the value of **number**, the system sets tag technologies ([NFC_A](#technology-type-definition), [NFC_B](#technology-type-definition), and [NFC_F](#technology-type-definition), and [NFC_V](#technology-type-definition)) for NFC card read polling and disable card emulation. If the **number** length is 0, both card read polling and card emulation will be disabled.|
| callback | AsyncCallback&lt;[TagInfo](#taginfo)&gt; | Yes | Callback invoked to return the card read event in the foreground.|
**Example**
See the example of [tag.unregisterForegroundDispatch](#tagunregisterforegrounddispatch10).
## tag.unregisterForegroundDispatch<sup>10+</sup>
unregisterForegroundDispatch(elementName: [ElementName](js-apis-bundleManager-elementName.md)): void;
Unregisters the listening for card reading events of an NFC tag foreground application. The registered event listening must be unregistered before the page exits the foreground or the page is destroyed.
**Required permissions**: ohos.permission.NFC_TAG
**System capability**: SystemCapability.Communication.NFC.Tag
**Parameters**
| Name | Type | Mandatory| Description |
| ------------ | -------- | ---- | ------------------------------------------------------- |
| elementName | [ElementName](js-apis-bundleManager-elementName.md) | Yes | Information about the application page. It must contain at least the **bundleName**, **abilityName**, and **moduleName**. |
**Example**
```js
import UIAbility from '@ohos.app.ability.UIAbility'
import tag from '@ohos.nfc.tag';
let elementName = null;
let discTech = [tag.NFC_A, tag.NFC_B]; // replace with the tech(s) that is needed by foreground ability
function foregroundCb(tagInfo: any) {
console.log("foreground callback: tag found tagInfo = ", JSON.stringify(tagInfo));
}
export default class MainAbility extends UIAbility {
OnCreate(want, launchParam) {
console.log("OnCreate");
elementName = {
bundleName: want.bundleName,
abilityName: want.abilityName,
moduleName: want.moduleName
}
}
onForeground() {
console.log("onForeground");
try {
tag.registerForegroundDispatch(elementName, discTech, foregroundCb);
} catch (e) {
console.log("registerForegroundDispatch error: " + e.message);
}
}
onBackground() {
console.log("onBackground");
try {
tag.unregisterForegroundDispatch(elementName);
} catch (e) {
console.log("registerForegroundDispatch error: " + e.message);
}
}
onWindowStageDestroy() {
console.log("onWindowStageDestroy");
try {
tag.unregisterForegroundDispatch(elementName);
} catch (e) {
console.log("registerForegroundDispatch error: " + e.message);
}
}
// override other lifecycle functions
}
```
## tag.ndef.makeUriRecord<sup>9+</sup>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册