From 6d7cf85c120b1b28075f8ec3e1f6600a9e430e07 Mon Sep 17 00:00:00 2001 From: ql Date: Fri, 25 Mar 2022 02:57:21 +0000 Subject: [PATCH] update zh-cn/application-dev/ability/fa-pageability.md. Signed-off-by: ql --- .../application-dev/ability/fa-pageability.md | 80 ++++++++++++++++--- 1 file changed, 69 insertions(+), 11 deletions(-) diff --git a/zh-cn/application-dev/ability/fa-pageability.md b/zh-cn/application-dev/ability/fa-pageability.md index e9675773dc..eb39e05105 100644 --- a/zh-cn/application-dev/ability/fa-pageability.md +++ b/zh-cn/application-dev/ability/fa-pageability.md @@ -113,26 +113,84 @@ featureAbility.startAbility({ }, ); ``` -### 启动远程PageAbility +### 启动远程PageAbility(当前仅对系统应用开放) * 导入模块 ``` import featureAbility from '@ohos.ability.featureAbility' +import deviceManager from '@ohos.distributedHardware.deviceManager'; ``` * 示例 - -```javascript -var promise = await featureAbility.startAbility({ - want: - { - deviceId: this.deviceId, - bundleName: "com.example.test", - abilityName: "com.example.test.MainAbility", - }, +```ts +function onStartRemoteAbility() { + console.info('onStartRemoteAbility begin'); + var params; + var wantValue = { + bundleName: 'ohos.samples.etsDemo', + abilityName: 'ohos.samples.etsDemo.RemoteAbility', + deviceId: getRemoteDeviceId(), + parameters: params + }; + console.info('onStartRemoteAbility want=' + JSON.stringify(wantValue)); + featureAbility.startAbility({ + want: wantValue + }).then((data) => { + console.info('onStartRemoteAbility finished, ' + JSON.stringify(data)); + }); + console.info('onStartRemoteAbility end'); +} +``` +从DeviceManager获取deviceId,具体示例代码如下: +```ts +function getRemoteDeviceId() { + if (typeof dmClass === 'object' && dmClass != null) { + var list = dmClass.getTrustedDeviceListSync(); + if (typeof (list) == 'undefined' || typeof (list.length) == 'undefined') { + console.log("MainAbility onButtonClick getRemoteDeviceId err: list is null"); + return; + } + console.log("MainAbility onButtonClick getRemoteDeviceId success:" + list[0].deviceId); + return list[0].deviceId; + } else { + console.log("MainAbility onButtonClick getRemoteDeviceId err: dmClass is null"); + } +} +``` +在跨设备场景下,需要向用户申请数据同步的权限。具体示例代码如下: +```ts +async function RequestPermission() { + console.info('[dmsDemo] RequestPermission begin'); + let array: Array = ["ohos.permission.DISTRIBUTED_DATASYNC"]; + var bundleFlag = 0; + var tokenID = undefined; + var userID = 100; + var appInfo = await bundle.getApplicationInfo('ohos.samples.etsDemo', bundleFlag, userID); + tokenID = appInfo.accessTokenId; + var atManager = abilityAccessCtrl.createAtManager(); + let requestPermissions: Array = []; + for (let i = 0;i < array.length; i++) { + var result = await atManager.verifyAccessToken(tokenID, array[i]); + console.info("[dmsDemo] verifyAccessToken result:" + JSON.stringify(result)); + if (result == abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) { + } else { + requestPermissions.push(array[i]); + } + } + console.info("[dmsDemo] requestPermissions:" + JSON.stringify(requestPermissions)); + if (requestPermissions.length == 0 || requestPermissions == []) { + return; + } + let context = featureAbility.getContext(); + context.requestPermissionsFromUser(requestPermissions, 1, (data)=>{ + console.info("[dmsDemo] data:" + JSON.stringify(data)); + console.info("[dmsDemo] data requestCode:" + data.requestCode); + console.info("[dmsDemo] data permissions:" + data.permissions); + console.info("[dmsDemo] data authResults:" + data.authResults); + }); + console.info('[dmsDemo] RequestPermission end'); } -); ``` ### 生命周期接口说明 **表2** 生命周期回调函数介绍 -- GitLab