HarmonyOS 鸿蒙Next中API调用分享面板的时候怎么屏蔽竞品应用呢
HarmonyOS 鸿蒙Next中API调用分享面板的时候怎么屏蔽竞品应用呢 API调用分享面板的时候怎么屏蔽竞品应用呢
6 回复
目前只能屏蔽一些系统级能力,不支持屏蔽什么竞品应用哦!看下面的例子:
启动分享面板,并配置不显示打印快捷操作。如需屏蔽其他系统级快捷操作:
// 构建ShareController
let controller: systemShare.ShareController = new systemShare.ShareController(data);
let context: common.UIAbilityContext = uiContext.getHostContext() as common.UIAbilityContext;
// 注册分享面板关闭监听
controller.on('dismiss', () => {
console.info('Share panel closed');
// 分享结束,可处理其他业务。
});
// 进行分享面板显示
controller.show(context, {
previewMode: systemShare.SharePreviewMode.DETAIL,
selectionMode: systemShare.SelectionMode.SINGLE,
excludedAbilities: [systemShare.ShareAbilityType.PRINT]
})
ShareAbilityType
系统能力类型定义。用于排除操作区的系统能力。
**模型约束:**此接口仅可在Stage模型下使用。
**系统能力:**SystemCapability.Collaboration.SystemShare
**起始版本:**5.0.0(12)
| 名称 | 值 | 说明 |
|---|---|---|
| COPY_TO_PASTEBOARD | 0 | 复制 |
| SAVE_TO_MEDIA_ASSET | 1 | 保存至图库 |
| SAVE_AS_FILE | 2 | 另存为 |
| 3 | 打印 | |
| SAVE_TO_SUPERHUB | 4 | 添加至中转站 |
这是系统级的,暂时不支持屏蔽。
[裂开]
在HarmonyOS Next中,可以通过ShareDialog的excludedTypes参数来过滤分享面板中不希望显示的竞品应用。具体实现时,需要定义排除的应用类型列表(如微信、QQ等竞品的包名或类型标识),并在调用分享API时传入该参数。示例代码:
let excludedTypes = ['com.tencent.mm', 'com.tencent.mobileqq']; // 示例竞品包名
let shareDialog = new ShareDialog(context, {
excludedTypes: excludedTypes
});
这样设置后,分享面板将自动屏蔽指定的竞品应用,仅显示允许的应用选项。注意需确保传入的标识与系统应用类型匹配。


