# MigrationDemo **Repository Path**: cxshu/migration-demo ## Basic Information - **Project Name**: MigrationDemo - **Description**: 通过鸿蒙的分布式调度能力实现了跨设备迁移 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-06-03 - **Last Updated**: 2022-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1). 三方应用部署权限、分布式数据传输的权限、系统应用使用权限的申请 ``` "reqPermissions": [ {"name": "ohos.permission.servicebus.ACCESS_SERVICE"}, {"name": "ohos.permission.DISTRIBUTED_DATASYNC"}, {"name": "com.example.phonedemo02.servicebus.BIND_SERVICE"} ] ``` 2)。 声明分布式获取设备列表及设备信息的权限,如下所示: ``` "reqPermissions": [ {"name":"ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE"}, {"name":"ohos.permission.GET_DISTRIBUTED_DEVICE_INFO"}, {"name":"ohos.permission.GET_BUNDLE_INFO"} ] ``` 4). 本地FA跳转 ``` Intent intent2 = new Intent(); /* 跳转到指定FA ElementName(String deviceId, String bundleName, String abilityName) deviceId:设备Id, 为空时代表本机 bundleName: 包名 abilityName: 要跳转的目标ability */ ElementName migrationAbility = new ElementName("", "com.cxs.migrationdemo", "MigrationAbility"); intent2.setElement(migrationAbility); startAbility(intent2); ``` 5). 启动远程FA ``` String deviceId = DeviceUtils.getDeviceId(); Intent intent1 = new Intent(); Operation build = new Intent.OperationBuilder() .withDeviceId(deviceId) .withBundleName("com.cxs.migrationdemo") .withAbilityName("com.cxs.migrationdemo.RemoteAbility") .withFlags(Intent.FLAG_ABILITYSLICE_MULTI_DEVICE) // 表示该应用支持分布式调度,否则无法获得分布式能力 .build(); intent1.setOperation(build); startAbility(intent1); ``` 6). 迁移FA ``` continueAbility(String deviceld)接口提供将本地FA迁移到指定设备上的能力 continueAbilityReversibly(String deviceld)接口提供将本地FA迁移到指定设备上的能力,这种迁移可撤回, reverseContinueAbility)接口提供撤回迁移的能力。 ``` ![输入图片说明](https://images.gitee.com/uploads/images/2021/0603/201201_36529bae_2252261.png "clipboard0.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0603/201220_2a95db6d_2252261.png "clipboard.png")