使用友盟分享,有时候我们需要在分享面板上添加一些额外的按钮,需要自定义分享按钮
友盟的集成就不说了,官方文档很详细,直接说实现,看代码:
//分享的方法 public void shareMehtod() { new ShareAction(getActivity()) .setDisplayList(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE) //分享平台 .addButton("umeng_sharebutton_custom","umeng_sharebutton_custom","info_icon_1","info_icon_1") // 分享面板添加自定义按钮 .setShareboardclickCallback(shareBoardlistener) //面板点击监听器 .open(); }方法 setDisplayList(); 用来设置分享到的平台(已经集成好的);
方法 addButton(); 四个参数:自定义按钮的key value 自定义图标名称 图标值(放置在图片资源文件夹下)
//分享的监听 private ShareBoardlistener shareBoardlistener = new ShareBoardlistener() { @Override public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) { if (share_media==null){ //根据key来区分自定义按钮的类型,并进行对应的操作 if (snsPlatform.mKeyword.equals("umeng_sharebutton_custom")){ //点击后复制微信号的逻辑 ClipboardManager cm = (ClipboardManager)getActivity().getSystemService(Context.CLIPBOARD_SERVICE); // 将文本内容放到系统剪贴板里。 cm.setText(""); MyToast.showToast(getActivity(), "链接已复制成功!").show(); } } else {//社交平台的分享行为 //分享的图片 UMImage thumb = new UMImage(getActivity(), R.mipmap.thumbnail); //分享链接 UMWeb web = new UMWeb(UrlContent.getContentDetialsData+myApplication.getThe_farmer_aid()); web.setTitle("");//标题 web.setThumb(thumb); //缩略图 web.setDescription("");//描述 new ShareAction(getActivity()) .setPlatform(share_media) .withText("多平台分享") .withMedia(web) .setCallback(new UMShareListener() { @Override public void onStart(SHARE_MEDIA share_media) { } @Override public void onResult(SHARE_MEDIA share_media) { MyToast.showToast(getActivity(), "分享成功!").show(); } @Override public void onError(SHARE_MEDIA share_media, Throwable throwable) { MyToast.showToast(getActivity(), "分享失败!").show(); } @Override public void onCancel(SHARE_MEDIA share_media) { MyToast.showToast(getActivity(), "分享取消!").show(); } }) .share(); } } };
另外不要忘了在Activity里回调
//分享后的回调 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); }
上面的注释很详细了,有不清楚的地方可以留言