鸿蒙进程通信的坑之ServiceExtensionAbility
如果想实现一个设备上的两个应用之间的通信,在鸿蒙里面需要用rpc 的方式,鸿蒙贴心的提供了ExtensionAbility组件,并且贴出的具体的代码,让实现ServiceExtensionAbility,
但是当你去按照代码实现的时候,会提示:
‘“@kit.AbilityKit”’ has no exported member named ‘ServiceExtensionAbility’. Did you mean ‘ShareExtensionAbility’? 。
这是什么情况?
查看文档说明:
通常情况下,应用中(同一Bundle名称)所有同一类型的ExtensionAbility均运行在同一个独立进程。以下为例外场景:
ServiceExtensionAbility(仅系统应用涉及)、DataShareExtensionAbility(仅系统应用涉及)与所有UIAbility均运行在同一个独立进程(主进程)。
同意设备上的应用之间的数据通信不能用这个,他是系统应用才行。那么如何解决呢?
还有一个方案:
AppServiceExtensionAbility实现后台服务
但是:从API version 20开始,支持使用AppServiceExtensionAbility组件,为应用提供后台服务能力。主要用于2in1设备上的企业普通应用进行后台服务开发,例如,用于保障网络安全的企业EDR软件,或者管理设备的企业MDM软件等。
目前有个约束限制:
应用集成AppServiceExtensionAbility的组件需要申请ACL权限(ohos.permission.SUPPORT_APP_SERVICE_EXTENSION)。该ACL权限当前只对企业普通应用开放申请。