在项目的根目录下
repositories {
google()
jcenter()
//加上这句
maven { url 'https://dl.bintray.com/umsdk/release' }
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
//加上这句
maven { url 'https://dl.bintray.com/umsdk/release' }
}
}
在APP的build.gradle下添加如下代码,本人只集成了微信分享,需要别的可以自行添加
// 友盟基础组件
implementation 'com.umeng.umsdk:common:2.0.0'
implementation 'com.umeng.umsdk:utdid:1.1.5.3'
// 友盟分享
implementation 'com.umeng.umsdk:share-core:6.9.4'
implementation 'com.umeng.umsdk:share-wx:6.9.4'
//implementation 'com.umeng.sdk:shareboard-widget:6.9.2'
// 友盟统计
implementation 'com.umeng.umsdk:analytics:8.0.0'
需要注意的是,如果在别的地方有了utdid,比如阿里的热修复框架,就不要这个了。
在自己的报名下新建一个目录,取名为wxapi,在里面新建一个activity,取名为WXEntryActivity,继承WXCallbackActivity。完整代码如下
/**
* 微信客户端回调activity示例
*/
public class WXEntryActivity extends WXCallbackActivity {
}
在清单文件注册这个activity
需要注意的是一定要加上 android:launchMode="singleTask"与android:taskAffinity=“xx.xxx.xxxx”,不然会出现意想不到的效果。
初始化友盟组件。在自定义的application中的oncreate中
//初始化
UMConfigure.init(this, "5cb5869b61f5643dca0001fe", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");
//自动统计数据
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
最后就是看文档分享的操作了,我是自己的分享样式,所以没有集成友盟的分享样式组件,需要的可以自己看下官方文档手动集成。集成基本上就这么多了。
以下分享都是不带样式的。以下的分享代码都来自官方文档,放心使用,至于其他的,比如分享枚举类型等,可到官网查看。友盟开发者文档
纯文本分享如下:
new ShareAction(ShareActivity.this).withText("hello").withMedia(image).share();
在使用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();
现在支持多图分享的平台有两个,一个是新浪微博一个是QQ空间,都是最多上传9张图片,新浪微博超过9张不会上传,QQ空间超过九张会上传QQ空间相册。
new ShareAction(ShareDetailActivity.this).withMedias(imagelocal,imagelocal,imagelocall)
.setPlatform(share_media)
.withText("hello")
.setCallback(shareListener).share();
分享链接可以使用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();
视频只能使用网络视频:
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");//视频的描述
音乐只能使用网络音乐:
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();
目前只有微信好友分享支持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();
目前只有微信好友支持小程序分享,朋友圈,收藏及其他平台暂不支持:
UMMin umMin = new UMMin(Defaultcontent.url);
//兼容低版本的网页链接
umMin.setThumb(imagelocal);
// 小程序消息封面图片
umMin.setTitle(Defaultcontent.title);
// 小程序消息title
umMin.setDescription(Defaultcontent.text);
// 小程序消息描述
umMin.setPath("pages/page10007/xxxxxx");
//小程序页面路径
umMin.setUserName("gh_xxxxxxxxxxxx");
// 小程序原始id,在微信平台查询
new ShareAction(ShareDetailActivity.this)
.withMedia(umMin)
.setPlatform(share_media)
.setCallback(shareListener).share();