2. 分享集成
友盟分享分为两种形式:
- 使用分享面板的分享,用户可以调用我们的打开分享面板的方法,点击分享面板的对应平台进行分享。
- 不使用分享面板的分享,用户可以自己写分享按钮,或者触发事件,然后调用我们的分享方法,进行分享。
简而言之,直接分享就是在用户自己的界面组件中插入分享行为,分享面板是打开我们写好的一个界面组件,根据点击事件进行分享。
2.1 分享(带面板)
打开分享面板的代码如下:
new ShareAction(MainActivity.this)
.withText("hello")
.setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)
.setCallback(umShareListener)
.open();
关于分享面板的更多功能可以参照分享面板进阶。
2.2 分享(不带面板)
分享可以通过如下代码实现:
new ShareAction(MainActivity.this)
.setPlatform(SHARE_MEDIA.QQ)//传入平台
.withText("hello")//分享内容
.setCallback(umShareListener)//回调监听器
.share();
其中umShareListener为回调监听,构建如下:
private UMShareListener shareListener = new UMShareListener() {
/**
* @descrption 分享开始的回调
* @param platform 平台类型
*/
@Override
public void onStart(SHARE_MEDIA platform) {
}
/**
* @descrption 分享成功的回调
* @param platform 平台类型
*/
@Override
public void onResult(SHARE_MEDIA platform) {
Toast.makeText(ShareDetailActivity.this,"成功了",Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(ShareDetailActivity.this,"失败"+t.getMessage(),Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享取消的回调
* @param platform 平台类型
*/
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(ShareDetailActivity.this,"取消了",Toast.LENGTH_LONG).show();
}
};
2.3 分享消息类型
2.3.1 文本
纯文本分享如下:
new ShareAction(ShareActivity.this).withText("hello").withMedia(image).share();
2.3.2 图片
在使用ShareAction的时候,调用withMedia可以设置一个UMImage(图片分享),UMImage的构建有如下几种形式
UMImage image = new UMImage(ShareActivity.this, "imageurl");//网络图片
UMImage image = new UMImage(ShareActivity.this, file);//本地文件
UMImage image = new UMImage(ShareActivity.this, R.drawable.xxx);//资源文件
UMImage image = new UMImage(ShareActivity.this, bitmap);//bitmap文件
UMImage image = new UMImage(ShareActivity.this, byte[]);//字节流
推荐使用网络图片和资源文件的方式,平台兼容性更高。 对于部分平台,分享的图片需要设置缩略图,缩略图的设置规则为:
UMImage thumb = new UMImage(this, R.drawable.thumb);
image.setThumb(thumb);
用户设置的图片大小最好不要超过250k,缩略图不要超过18k,如果超过太多(最好不要分享1M以上的图片,压缩效率会很低),图片会被压缩。 用户可以设置压缩的方式:
image.compressStyle = UMImage.CompressStyle.SCALE;//大小压缩,默认为大小压缩,适合普通很大的图
image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享
压缩格式设置
image.compressFormat = Bitmap.CompressFormat.PNG;//用户分享透明背景的图片可以设置这种方式,但是qq好友,微信朋友圈,不支持透明背景图片,会变成黑色
创建好UMImage之后调用分享即可,如下所示:
new ShareAction(ShareActivity.this).withText("hello").withMedia(image).share();
2.3.3 链接
分享链接可以使用UMWeb进行分享:
UMWeb web = new UMWeb(Defaultcontent.url);
web.setTitle("This is music title");//标题
web.setThumb(thumb); //缩略图
web.setDescription("my description");//描述
然后调用将这个参数设置到ShareAction中:
new ShareAction(ShareActivity.this)
.withMedia(web)
.share();
2.3.4 视频
视频只能使用网络视频:
UMVideo video = new UMVideo(videourl);
video.setTitle("This is music title");//视频的标题
video.setThumb("http://www.umeng.com/images/pic/social/chart_1.png");//视频的缩略图
video.setDescription("my description");//视频的描述
建立好之后可以进行分享:
new ShareAction(ShareActivity.this).withText("hello").withMedia(video).share();
2.3.5 音乐
音乐只能使用网络音乐:
UMusic music = new UMusic(musicurl);//音乐的播放链接
music.setTitle("This is music title");//音乐的标题
music.setThumb("http://www.umeng.com/images/pic/social/chart_1.png");//音乐的缩略图
music.setDescription("my description");//音乐的描述
music.setmTargetUrl(Defaultcontent.url);//音乐的跳转链接
建立好之后可以进行分享:
new ShareAction(ShareActivity.this)
.withMedia(music)
.share();
特别说明:播放链接是指在微信qq分享音乐,是可以在当前聊天界面播放的,要求这个musicurl(播放链接)必须要以.mp3等音乐格式结尾,跳转链接是指点击linkcard之后进行跳转的链接。
2.3.6 GIF
目前只有微信好友分享支持Emoji表情,其他平台暂不支持
UMEmoji emoji = new UMEmoji(this,"http://img5.imgtn.bdimg.com/it/u=2749190246,3857616763&fm=21&gp=0.jpg");
emoji.setThumb(new UMImage(this, R.drawable.thumb));
new ShareAction(ShareActivity.this)
.withMedia(emoji)
.share();
2.3.7 微信小程序
目前只有微信好友支持小程序分享,朋友圈,收藏及其他平台暂不支持:
UMMin umMin = new UMMin(Defaultcontent.url);
umMin.setThumb(imagelocal);
umMin.setTitle(Defaultcontent.title);
umMin.setDescription(Defaultcontent.text);
umMin.setPath("pages/page10007/xxxxxx");
umMin.setUserName("xx_xxx");
new ShareAction(ShareDetailActivity.this)
.withMedia(umMin)
.setPlatform(share_media)
.setCallback(shareListener)
.share();
2.4 分享到其他平台
2.4.1 各平台支持的分享类型预览
平台 | 是否支持登录 | 可分享内容 | 是否支持获取用户信息 |
是 | 图片 链接 视频 音乐 | 是 | |
Qzone | 是 | 文字(说说) 图片(说说) 链接 视频 音乐 | 是 |
微信 | 是 | 文本 图片 链接 视频 音乐 | 是 |
微信朋友圈 | 是 | 文本 图片 链接(Description不会显示) 视频 音乐 | 是 |
新浪微博 | 是 | 文本 图片 图文 链接(需要linkcard权限,否则不显示图片) 视频 音乐 | 是 |
腾讯微博 | 是(网页) | 文本 图片 图文 链接 视频 音乐 | 是 |
支付宝 | 否 | 文本 图片 链接 视频 音乐 | 否 |
钉钉 | 否 | 文本 图片 链接 视频 音乐 | 否 |
易信/朋友圈 | 否 | 文本 图片 链接 视频 音乐 | 否 |
人人 | 是(网页) | 文本 图文 图片 | 否 |
豆瓣 | 是(网页) | 文本 图文 图片 | 否 |
点点虫动态 | 否 | 文本 图文 图片 链接 视频 音乐 | 否 |
微信收藏 | 是 | 文本 图片 链接 视频 音乐 文件 | 是 |
是 | 文本 图文 图片 链接 视频 音乐 | 是 | |
是 | 图片 链接 视频 | 是 | |
Facebook Messenger | 否 | 图片 链接 视频 | 否 |
是 | 文本 图文 图片 | 是 | |
短信 | 否 | 文本 图文 图片 | 否 |
邮件 | 否 | 文本 图文 图片 | 否 |
否 | 图片 | 否 | |
否 | 图片 | 否 | |
Tumblr | 否 | 文本 图片 | 否 |
line | 否 | 文本 图文 图片 | 否 |
否 | 文本 图片 图文 | 否 | |
flickr | 否 | 图片 | 否 |
kakao | 是 | 文本 图文 图片 | 是 |
googleplus | 否 | 文本 图文 图片 | 否 |
印象笔记 | 否 | 文本 图片 图文 | 否 |
有道笔记 | 否 | 文本 图片 图文 | 否 |
否 | 链接 | 否 | |
foursquare | 否 | 图片 | 否 |
Dropbox | 是 | 图片 | 是 |
VKnotakte | 是 | 图片 文本 链接 音乐 视频 | 是 |