本片博客主要介绍了使用友盟sdk实现第三方平台的分享功能,以集成QQ,QQZONE,微信,微信朋友圈为例讲解。
前期准备
- 申请友盟开发平台的账号,并申请appkey
- 申请微信开发平台的账号,腾讯开发平台的账号,并创建应用,得到appid和appKey。
申请账号的流程已经在上一篇文章中介绍了,这里就不在过多啰嗦了。请参考:
http://blog.csdn.net/qq_27942511/article/details/71123931
步骤
- 下载sdk
根据需要下载对应平台的sdk和资源。
- 拷贝jar,res等文件到工程中
- 添加对应的回调Activity
- 修改AndroidManiFest
- 修改build.gradle文件
- 配置各个平台的appkey
- 混淆文件
以上步骤在上一篇文章中已经写的很详细了,请参考:
http://blog.csdn.net/qq_27942511/article/details/71123931
- 代码调用
官方文档上面写的情况比较复杂,会很费时间,下面就来说一下我接入的情况
private ShareAction mShareAction;
private void handleShare(final String data) {
mShareAction = new ShareAction(getActivity()).setDisplayList(SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE)
.setShareboardclickCallback(new ShareBoardlistener() {
@Override
public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(data);
} catch (JSONException e) {
e.printStackTrace();
}
if (jsonObject != null) {
UMWeb web = new UMWeb(jsonObject.optString("url"));
web.setTitle(jsonObject.optString("title"));
web.setDescription(jsonObject.optString("shareContent"));
web.setThumb(new UMImage(getActivity(), jsonObject.optString("imageURL")));
new ShareAction(getActivity()).withMedia(web)
.setPlatform(share_media)
.setCallback(umShareListener)
.share();
} else {
LogUtil.logByE("data == null");
}
}
});
mShareAction.open();
}
private UMShareListener umShareListener = new UMShareListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
//分享开始的回调
}
@Override
public void onResult(SHARE_MEDIA platform) {
LogUtil.logByD("plat", "platform" + platform);
AppUtil.showToastMsg(getActivity(), "分享成功");
}
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
if (t != null) {
LogUtil.logByE("throw:" + t.getMessage());
AppUtil.showToastMsg(getActivity(), "分享失败");
}
}
@Override
public void onCancel(SHARE_MEDIA platform) {
AppUtil.showToastMsg(getActivity(), "分享取消");
}
};
以上就是所有的代码,下面看一下效果图
如果想分享更加复杂的内容,请参考官方文档:
http://dev.umeng.com/social/android/share-detail#4