
Harmony OS 分布式操作(跨设备拉起以及Ability迁移) 精华
权限配置以及申请
首先设备要分布式申请权限,和Abilities平级写在config.json中。
权限配置相关文档
在这简述:
{允许应用程序与其他设备交换用户数据(如图像、音乐、视频和应用程序数据)}
{允许设备状态改变}
{允许获取其他设备信息(Id、name等)}
{允许非系统应用程序查询有关其他应用程序的信息。}
在MainAbility中添加一行申请权限代码
void requestPermissionsFromUser (String[] permissions, int requestCode)
接口功能:向系统权限管理模块申请权限(接口可支持一次申请多个。若下一步操作涉及到多个敏感权限,可以这么用,其他情况建议不要这么用。因为弹框还是按权限组一个个去弹框,耗时比较长。用到哪个权限就去申请哪个)
输入参数: permissions:权限名列表;requestCode: 请求应答会带回此编码以匹配本次申请的权限请求
输出参数:无
返回值:无
权限申请配置完成。
获取在线设备Id
首先分布式操作肯定要获取其他在线设备信息(Id等)通过Id找到设备交互
这个可以单独另写一个工具类来获取在线设备Id(具体看代码注释)
设置按钮监听事件
进行主页布局设置,主页就设置两个按钮分别展示拉起和迁移两个功能。
略过UI布局,接下来是对按钮进行事件监听
对onClick接口进行重新,因为是两个按钮,所以要判断是点击了哪个按钮,用一个switch判断。
拉起远端设备FeatureAbility
演示过程
先要在两个设备上都运行一下 ,让两个设备都安装上hap包
打开其中一个设备的应用,弹出权限访问dialog,允许访问,然后点击启动远程设备FA
成功拉起另一个设备的RemoteAbility。
在这个地方他是在89设备的MainAbility执行操作,在MainAbilitySlice点击第一个按钮,执行拉起功能,拉起设备88的RemoteAnility,渲染RemoteAbilitySlice(XML没做改动即你好世界)。
页面迁移
点击第二个按钮进入MigrationAbilitySlice(一个TextField和两个Button)
在文本中输入一些文字,点击迁移,效果如下,会在另一台设备拉起该页且会将文本数据通过软总线传输过去,给用户的使用好像就像一台设备,就好像一台设备通过底层总线进行传输数据。
在远端设备进行输入,然后在本地端点击迁回,会关闭远端并且将远端文本传回
迁移页面的后端代码以及注释:
最后同样还要在MigrationAbility中实现IAbilityContinuation接口才可以支持迁移
