php网站开发如何实现删除功能,大连大连建设工程信息网站,cms系统主要做什么,手机之家下载安装启动远程PageAbility同样通过featureAbility中的startAbility接口实现。
除引入’ohos.ability.featureAbility’外#xff0c;还需引入’ohos.distributedHardware.deviceManager’#xff0c;通过DeviceManager#xff08;该组件提供帐号无关的分布式设备的认证组网能力ohos.ability.featureAbility’外还需引入’ohos.distributedHardware.deviceManager’通过DeviceManager该组件提供帐号无关的分布式设备的认证组网能力的getTrustedDeviceListSync接口获取信任设备列表获取远端的deviceId写入want中用于启动远程PageAbility。
由于当前DeviceManager的getTrustedDeviceListSync接口仅对系统应用开放故现阶段非系统应用无法获取其他设备信息无远程启动设备选择入口远程启动Ability开发。
表1 featureAbility接口说明
接口名接口描述startAbility(parameter: StartAbilityParameter)启动Ability。startAbilityForResult(parameter: StartAbilityParameter)启动Ability并在该Ability被销毁时返回执行结果。
表2 deviceManager接口说明
接口名接口描述getTrustedDeviceListSync(): Array同步获取所有可信设备列表。
在跨设备场景下启动远程PageAbility首先需要向用户申请数据同步的权限相关接口说明如下
表3 AtManager接口说明
接口名接口描述checkAccessToken(tokenID: number, permissionName: string): Promise校验应用是否授予权限。使用Promise异步回调。返回值GrantStatus。建议使用checkAccessToken代替verifyAccessToken已废弃verifyAccessToken从API version 9开始不再维护。
表4 context接口说明 trequestpermissionsfromuser7-1)。 |
如下示例代码展示了向用户申请数据同步权限的方法
import abilityAccessCtrl from ohos.abilityAccessCtrl;
import featureAbility from ohos.ability.featureAbility;
import bundle from ohos.bundle.bundleManager;
import Logger from ../../utils/Logger;const TAG: string PagePageAbilitySecond;async requestPermission(): Promisevoid {Logger.info(TAG, RequestPermission begin);let array: Arraystring [ohos.permission.DISTRIBUTED_DATASYNC];let bundleFlag 0;let tokenID: number | undefined undefined;let userID 100;let appInfo await bundle.getApplicationInfo(com.samples.famodelabilitydevelop, bundleFlag, userID);tokenID appInfo.accessTokenId;let atManager abilityAccessCtrl.createAtManager();let requestPermissions: Arraystring [];for (let i 0;i array.length; i) {let result await atManager.verifyAccessToken(tokenID, array[i]);Logger.info(TAG, checkAccessToken result: JSON.stringify(result));if (result ! abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {requestPermissions.push(array[i]);}}Logger.info(TAG, requestPermissions: JSON.stringify(requestPermissions));if (requestPermissions.length 0) {return;}let context featureAbility.getContext();context.requestPermissionsFromUser(requestPermissions, 1, (error, data) {Logger.info(TAG, error: error.message ,data: JSON.stringify(data));Logger.info(TAG, data requestCode: data.requestCode);Logger.info(TAG, data permissions: data.permissions);Logger.info(TAG, data authResults: data.authResults);});Logger.info(TAG, RequestPermission end);
}在获取数据同步权限后需要获取可信设备列表进行设备选择。
如下示例展示了通过getAvailableDeviceListSync获取可信设备列表选择设备的方法。
import deviceManager from ohos.distributedDeviceManager;
import promptAction from ohos.promptAction;
import Logger from ../../utils/Logger;const TAG: string PagePageAbilitySecond;State deviceID: string ;getRemoteDeviceId(): void {let dmClass: deviceManager.DeviceManager;dmClass deviceManager.createDeviceManager(com.samples.famodelabilitydevelop);try {if (typeof dmClass object dmClass ! null) {let list dmClass.getAvailableDeviceListSync();if (typeof (list) undefined || list.length 0) {Logger.info(TAG, EntryAbility onButtonClick getRemoteDeviceId err: list is null);return;}Logger.info(TAG, EntryAbility onButtonClick getRemoteDeviceId success[${list.length}]: JSON.stringify(list[0]));if (list[0].networkId ! undefined) {this.deviceID list[0].networkId;}promptAction.showToast({message: this.deviceID});} else {Logger.info(TAG, EntryAbility onButtonClick getRemoteDeviceId err: dmClass is null);}} catch (error) {Logger.info(TAG, getRemoteDeviceId error, error${error}, message${error.message});}
}设备选择完成后通过调用startAbility接口显式启动远程PageAbility。
如下示例展示了通过startAbility显式启动远程PageAbility的方法。
import featureAbility from ohos.ability.featureAbility;
import Want from ohos.app.ability.Want;
import promptAction from ohos.promptAction;
import { BusinessError } from ohos.base;
import Logger from ../../utils/Logger;const TAG: string PagePageAbilitySecond;;State deviceID: string ;onStartRemoteAbility(): void {Logger.info(TAG, onStartRemoteAbility begin);let wantValue: Want {bundleName: ohos.samples.distributedmusicplayer,abilityName: ohos.samples.distributedmusicplayer.MainAbility,deviceId: this.deviceID, // this.deviceID的获取方式在前面的示例代码中};Logger.info(TAG, onStartRemoteAbility want JSON.stringify(wantValue));featureAbility.startAbility({want: wantValue}).then((data) {promptAction.showToast({message: $r(app.string.start_remote_success_toast)});Logger.info(TAG, onStartRemoteAbility finished, JSON.stringify(data));}).catch((error: BusinessError) {promptAction.showToast({message: JSON.stringify(error)});Logger.error(TAG, onStartRemoteAbility failed: JSON.stringify(error));});Logger.info(TAG, onStartRemoteAbility end);
}为了能让大家更好的学习鸿蒙HarmonyOS NEXT开发技术这边特意整理了《鸿蒙开发学习手册》共计890页希望对大家有所帮助https://qr21.cn/FV7h05
《鸿蒙开发学习手册》
如何快速入门https://qr21.cn/FV7h05
基本概念构建第一个ArkTS应用…… 开发基础知识https://qr21.cn/FV7h05
应用基础知识配置文件应用数据管理应用安全管理应用隐私保护三方应用调用管控机制资源分类与访问学习ArkTS语言…… 基于ArkTS 开发https://qr21.cn/FV7h05
Ability开发UI开发公共事件与通知窗口管理媒体安全网络与链接电话服务数据管理后台任务(Background Task)管理设备管理设备使用信息统计DFX国际化开发折叠屏系列…… 鸿蒙开发面试真题含参考答案https://qr18.cn/F781PH 鸿蒙开发面试大盘集篇共计319页https://qr18.cn/F781PH
1.项目开发必备面试题 2.性能优化方向 3.架构方向 4.鸿蒙开发系统底层方向 5.鸿蒙音视频开发方向 6.鸿蒙车载开发方向 7.鸿蒙南向开发方向