1.去各个平台注册应用(例如:微信开放平台、腾讯开放平台)
2.在友盟平台选择应用
3.下载集成包
4.解压压缩包后点击【友盟集成工具.jar】,按需选择。
QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加:
**注意:**onActivityResult不可在fragment中实现,如果在fragment中调用登录或分享,需要在fragment依赖的Activity中实现。
备注:分享编辑页(只有新浪微博,QQ精简版,豆瓣,人人,腾讯微博,领英,twitter需要)。
Android6.0以上系统需要动态申请权限,根据需求,在适当位置校验和申请权限。运行时权限校验及申请,可以参考此文章。Android运行时权限
在application文件中配置三方平台的appkey:
备注:在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生。
在项目中设置打包签名(需要与各大平台申请时使用签名保持一致)。
1.微信平台回调Activity的路径名必须是【包名.wxapi.WXEntryActivity】,应用签名必须微信平台申请一致。
2.QQ平台必须允许读写SD卡权限;
3.QQ空间平台使用的是QQ应用(安装QQ空间应用视为未安装应用)。
private UMShareListener umShareListener = new UMShareListener() {
/**
* @descrption 分享开始的回调
* @param platform 平台类型
*/
@Override
public void onStart(SHARE_MEDIA platform) {}
/**
* @descrption 分享成功的回调
* @param platform 平台类型
*/
@Override
public void onResult(SHARE_MEDIA platform) {
Toast.makeText(mContext,"分享成功",Toast.LENGTH_SHORT).show();
}
/**
* @descrption 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(mContext,"分享失败"+t.getMessage(),Toast.LENGTH_SHORT).show();
}
/**
* @descrption 分享取消的回调
* @param platform 平台类型
*/
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(mContext,"取消分享",Toast.LENGTH_SHORT).show();
}
};
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[]);//字节流
分享结果:
1.视频只能使用网络视频:
UMVideo video = new UMVideo(videourl);//视频地址
video.setTitle(“视频标题”);//视频的标题
video.setThumb(“http://www.umeng.com/images/pic/social/chart_1.png“);//视频的缩略图
video.setDescription(“视频描述”);//视频的描述
2.使用.withMedia(video)设置到ShareAction中
1.音乐只能使用网络音乐:
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);//音乐的跳转链接
2.使用.withMedia(music)设置到ShareAction中
备注:特别说明:播放链接是指在微信qq分享音乐,是可以在当前聊天界面播放的,要求这个musicurl(播放链接)必须要以.mp3等音乐格式结尾,跳转链接是指点击linkcard之后进行跳转的链接。
1.构建UMEmoji
UMEmoji emoji = new UMEmoji(this,”GIF图片地址”);
emoji.setThumb(new UMImage(this, R.drawable.thumb));//缩略图
2.使用.withMedia(emoji)设置到ShareAction中
备注:目前只有微信好友分享支持Emoji表情,其他平台暂不支持。
1.构建UMMin
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");
2.使用.withMedia(umMin)设置到ShareAction中
备注:目前只有微信好友支持小程序分享,朋友圈,收藏及其他平台暂不支持。
用法如下:
1. 在string文件中设置:
自定义分享按钮
2. 然后将名字umeng_sharebutton_custom当做参数传入。
用法如下:
在drawable文件夹下有个图片叫做info_icon_1.png,想用该图片做按钮图标,可以将info_icon_1作为参数传入
private ShareBoardlistener shareBoardlistener = new ShareBoardlistener() {
@Override
public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
if (share_media == null) {
//根据key来区分自定义按钮的类型,并进行对应的操作
if (snsPlatform.mKeyword.equals("Keyword")) {
Toast.makeText(ShareActivity.this, "add button success", Toast.LENGTH_LONG).show();
}
} else {//社交平台的分享行为
new ShareAction(ShareActivity.this)
.setPlatform(share_media)
.setCallback(umShareListener)
.withText("多平台分享")
.share();
}
}
};
对于分享面板,开发者可以根据喜好,对背景颜色,显示位置,字体颜色等进行配置,配置需要使用ShareBoardConfig类。
更多参数设置查看分享集成文档附录4.6分享面板自定义进阶。点击跳转
在初始化sdk的地方设置Config.DEBUG = true
在使用分享或者授权的Activity中,重写onDestory()方法:
@Override
protected void onDestroy() {
super.onDestroy();
UMShareAPI.get(this).release();
}
mShareAPI.isInstall(this, SHARE_MEDIA.WEIXIN)
可能原因: