首先在我们的module.json5文件中申请分布式数据同步权限。

{
  "name" : "ohos.permission.DISTRIBUTED_DATASYNC",
  "reason": "$string:distributed_permission",
  "usedScene": {
    "abilities": [
      "EntryAbility"
    ],
    "when": "inuse"
  }

把上面这个对象放到我们的requestPermissions,没有的话就在module中自己写一个

以上配置name写我们要申请的权限名称。

reason表示我们要申请的原。

usedscene填一个对象,写需要使用这个权限的组件和调用权限的时机。

然后在我们的项目中写开启调用的逻辑,作为演示我在我的其中一个UI组件中定义了一个text组件并且添加点击了就会调用的逻辑。首先我们需要一个UIAbilityContext对象,所以我在我的组件中首先定义一个全局变量,变量类型为UIAbilityContext。

这是我的定义变量的代码:

let context = getContext(this) as common.UIAbilityContext;

这行代码用到的cmmon,是一个可以获取各类上下文对象的容器,通过导入来使用它,所以我们需要导入:import { common } from '@kit.AbilityKit';

接下来我为我的text组件来添加点击事件:context.startAbility({ })

我们的目的是简单开启林一台设备上的UI组件

我们需要填写的参数是{

'deviceId':'', 'bundleName':'', "abilityName": ''
}

第一个数值写我们要远程启动的设备的ID,第二个写我们要启动的app的包名,第三个写我们要启动的组件名,接下来介绍如何获得另一台设备的ID:

首先要保证两设备登陆同一个华为账号,且处于一个网络环境下,

然后我在我的测试UI组件中写一个aboutToAppear,

在aboutToAppear中首先创建一个AtManager对象,用这个对象调用requestPermissionsFromUser方法让用户来同意我们的权限,填入我们要申请权限组件的UIAbilityContext,填入我们要申请的权限的名称

['ohos.permission.DISTRIBUTED_DATASYNC']

我们要确认用户会同意权限,确认代码此处不写,那么成功后我们通过创建一个DeviceManager对象,创建对象填需要我们当前应用的包名作为参数,调用getAvailableDeviceList方法获取我们要操作的远程设备ID,在方法中填写一个回调函数,打印一下我们的返回值,返回值是一个对象数组,数组长度就是信任设备数量,其中对象的.networkId属性就是我们需要操控设备的ID。

最后在我们Text组件的点击事件中把需要的参数补全就实现了我们的功能了

context.startAbility({
  'deviceId':'信任设备ID',
  'bundleName':'app包名',
  "abilityName": "组件名"
})

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐