这两天项目需要使用社会化分享(实际上考虑的半天发现只有微信分享有市场,但是害怕项目经理再临时出需求,还是采用第三方的平台吧),一开始就直接采用了shareSDK做社会化分享,很多人都推荐这个;不过ShareSDK也确实在这块干了很长时间,各种配置也都非常简洁,官方文档写的很详细。
但是,使用过程中,还是出现了各种问题。
1、配置的地方太多,导致有时候发现配置出错找不到地方修改
2、jar包太大了
3、最重要的,分享结果一直没有回调,我跟他们的客服沟通了好久,奈何这个客服什么都不懂,根本不明白我想问的是什么,就一直发一些官方通用的东西,所以我一怒之下放弃了
后来,偶然间想起来,友盟也推出了这个东西,就抱着试一试的心态试试看了
打开友盟的分享,发现文档写的是不错挺详细,但是结构是真心的乱,而且demo给的也一般,但是用起来还是挺方便的,配置起来也比shareSDK简单了不少,但是中间还是遇到了不少问题,官方没有给出解决方案,在此记录一下吧
首先,注册在友盟上新创建一个android应用,得到key值
然后,去官方文档下载SDK,因为我用的是android Studio,所以我新建了一个module去集成这个东西
具体怎么新建,推荐这个博客上面写的是蛮详细的
接下来就开始真正的内容部分了(我只用了微信)
1、在Application中加上下面一行内容换成自己在微信上申请的值(这一步只要细心肯定是没错的)
PlatformConfig.setWeixin("wx0000000000000", "45434536453543543481233");
2、把友盟中的wxapi包,复制到自己项目的包名下面(根目录),在AndroidMamifest中加上下面代码
还有权限,自己上官方查
<activity
android:name="com.umeng.socialize.editorpage.ShareActivity"
android:theme="@style/Theme.UMDefault"
android:excludeFromRecents="true"/>
<meta-data android:value="13584368433814364" android:name="UMENG_APPKEY"></meta-data>
<!--微信分享回调-->
<activity
android:name=".wxapi.WXEntryActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait" />
UMENG_APPKEY换成自己申请的值,其他不用变
3、在你分享的Activity下面的方法中加上下面一行
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
4、因为官方的一键分享做的一般,所以我使用了自定义
new ShareAction(mActivity)
.setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)
.setCallback(mShareListener)
.withTitle(title)
.withText(text)
.withTargetUrl("http://www.baidu.com")
.withMedia(new UMImage(mActivity, 图片路径url))
.share();
dismiss();
setPlatform()方法中的值,换成分享的平台SHARE_MEDIA下面自己找
setCallback是回调方法,下面就可以
UMShareListener mShareListener = new UMShareListener() {
@Override
public void onResult(SHARE_MEDIA platform) {
ToastUtil.showShortMessage("分享成功");
}
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
ToastUtil.showShortMessage("分享失败");
}
@Override
public void onCancel(SHARE_MEDIA platform) {
ToastUtil.showShortMessage("取消分享");
}
};
withTitle中设置后貌似并没有用,但是还是要设置
withText这个是关键的,因为我要分享的是webpage界面,所以这里绝对不能为null后者“”,否则就会变成图片分享,这个问题困扰我了两个小时
withTargetUrl这个是点击跳转的网址,也不能为null或者“”
withMedia中间是分享的格式类型里面有四种方式image,表情,music,video四种,webpage是包含在image下面,想变成图片分享看上面两行就知道了
share是分享的方法
这些弄完就完成了一大半,最后因为申请微信的md5值用的是签名打包后的,但是debug中的签名跟正式包是不一样的,所以在android studio中还要配置下面几行
signingConfigs {
debug {
storeFile file("E:\\自己的签名路径")
storePassword "密码"
keyAlias "自己启的子项名字"
keyPassword "密码"
}
}
这样就可以使用正式签名测试了
到此,基本上就结束,以后如果有其他平台的分享会补充