tencent cloud

定制分享能力

PDF
聚焦模式
字号
最后更新时间: 2026-03-22 10:12:36

添加自定义分享按钮

通过重写 MiniAppProxyImpl.getMoreItems,在胶囊控制面板中通过 MoreItemList.Builder.addCustomShareItem 添加自定义分享菜单。
/**
* 添加自定义分享项,目前使用在点击更多按钮、button 组件(open-type="share")呼起的 ActionSheet 中
*
* @param text 分享菜单标题
* @param drawableResId 图标资源id
* @param id 自定义分享项的id,[100, 200]区间之内的值, 该 id 会作为 shareTarget 传递给 ShareProxy,用来区分分享渠道
* @param shareKey 自定义分享项的key,需要与小程序定义一致
* @param contentDescription 自定义分享项的描述,用于无障碍访问
* @return 返回builder对象,用于链式调用
*/
public Builder addCustomShareItem(String text, int drawableResId, int id, String shareKey, String contentDescription)
示例代码:
private static final String SHARE_TWITTER = "twitter";
/**
* 返回胶囊更多面板的按钮,扩展按钮的ID需要设置为[100, 200]这个区间中的值,否则,添加无效
* 调用环境:子进程
*
* @param miniAppContext 小程序运行环境(小程序进程,非主进程)
* @param builder
* @return
*/
@Override
public ArrayList<MoreItem> getMoreItems(IMiniAppContext miniAppContext, MoreItemList.Builder builder) {
// 自行调整顺序。
builder.addCustomShareItem(getString(miniAppContext, R.string.applet_mini_proxy_impl_other2),
R.mipmap.mini_demo_about,
ShareProxyImpl.OTHER_MORE_ITEM_2,
SHARE_TWITTER, null)
.addCustomShareItem(getString(miniAppContext, R.string.applet_mini_proxy_impl_other3),
R.drawable.tcmpp_demo_share_whatsapp,
ShareProxyImpl.SHARE_TO_WHATSAPP,
ShareProxyImpl.SHARE_TO_WHATSAPP_KEY, null)

.addCustomShareItem(getString(miniAppContext, R.string.applet_mini_proxy_impl_other4),
R.drawable.tcmpp_demo_share_more,
ShareProxyImpl.SHARE_TO_MORE,
ShareProxyImpl.SHARE_TO_MORE_KEY, null);
return super.getMoreItems(miniAppContext, builder);
}
胶囊菜单效果如下:

share-button 菜单效果如下:

注意:
转发按钮通过小程序 button 组件设置 open-type="share" 即可实现。
默认显示全部 superapp 代理接口实现的自定义分享渠道和默认分享渠道。
小程序可通过 button 组件的 share-mode 指定分享渠道,share-mode 取值对应 MoreItem 对象的 shareKey 属性;小程序指定分享渠道后,只展示superapp 中与之对应的渠道。

小程序及小游戏分享逻辑

1. 通过 onShareAppMessage 监听用户点击分享按钮行为,并自定义分享内容。
1.1 小程序通过 Page.onShareAppMessage 来监听。
1.2 小游戏通过 wx.onShareAppMessage 来监听。
2. 通过 wx.showShareMenu 来控制分享菜单是否展示。
注意:
胶囊正常展示分享菜单有如下几个条件:
1. 必须实现 onShareAppMessage 方法来返回分享信息,不实现则不会展示分享菜单。
2. wx.showShareMenu 指定的分享渠道需要与自定义的分享菜单一致,其中小程序会默认展示所有分享渠道,小游戏则必须显式调用 wx.showShareMenu 来指定。

分享逻辑实现

Superapp 收到小程序内部返回的分享数据后,会通过 ShareProxy.share 将分享动作转发给 superapp, 开发者需实现 ShareProxy 代理,根据 ShareData 中的 shareTarget 自行处理分享内容,对接第三方分享平台。
@ProxyService(proxy = ShareProxy.class)
public class ShareProxyImpl extends BaseShareProxy {
/**
* 分享
*
* @param shareData 分享数据
*/
@Override
public void share(Activity activity, ShareData shareData) {
//todo share
}
}

图片分享逻辑实现

Superapp 开发人员可以通过 MiniAppProxy.getImageShareCustomInfo 接口自定义 wx.showShareImageMenu 中显示的分享列表元素。
通过返回 ShareImageCustomInfo 对象可实现标题与分享元素自定义
@Override
public ShareImageCustomInfo getImageShareCustomInfo(IMiniAppContext miniAppContext) {
//创建分享元素列表
ArrayList<ShareImageItem> items = new ArrayList<>();
//添加自定义分享元素1
items.add(new ShareImageItem(miniAppContext.getContext().getString(R.string.applet_mini_proxy_impl_favorite),
ContextCompat.getDrawable(miniAppContext.getContext(), R.drawable.mini_sdk_favorite), (context, path) -> Toast.makeText(context.getAttachedActivity(),
"custom image share: " + path, Toast.LENGTH_SHORT).show()));
//添加自定义分享元素2
items.add(new ShareImageItem("custom share",
ContextCompat.getDrawable(miniAppContext.getContext(), R.drawable.mini_sdk_favorite), ShareProxyImpl.OTHER_MORE_ITEM_2));
return new ShareImageCustomInfo(items);
}

//自定义分享元素类定义
public class ShareImageItem {
//元素标题
public String title;
//元素图标
public Drawable icon;
//元素点击事件回调
public ClickEvent clickEvent;
//元素事件targetId,点击事件会通过 ShareProxy.share来转发,不再调用 clickEvent
public Integer shareTarget;
}
显示效果:



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈