现在的APP应该必不可少的一个功能就是三方登录和分享,写这篇文章希望给一些新手朋友一些意见少走点弯路,也是让自己在下一次做到分享的时候能不在那么愚蠢。(这应该是史上最笨的微博分享功能实现类的文章了)
首先先下载集成微博的SDK SDK下载地址
集成很简单,按照文档一步一步的复制粘贴就好了,我用的是android studio直接将aar包考到项目libs下就可以了
然后清单文件中将所需权限(这个官方文档都有)填写上就可以开始码砖了。
在你的微博APP KEY都申请下来之后,将官方Demo中的Constants
这个类可以copy一份在在即的项目中,改一下APP_KEY和回调URL就可以正常使用了。然后初始化你的WBSdk:
WbSdk.install(activity, newAuthInfo(activity,Constants.SinaWeiBo_APP_KEY,Constants.REDIRECT_URL,Constants.SCOPE));
注册你的ShareHandler:
ShareHandler shareHandler;
if(shareHandler==null){
shareHandler=newWbShareHandler(activity);
}
shareHandler.registerApp();
我是将所有的三方分享写在一个自定义Dialog中的,所以这个dialog需要实现WbShareCallback,然后点击微博图标的时候走一个方法就可以了:
private void shareToWeibo() {
WebpageObject mediaObj =newWebpageObject();
//创建文本消息对象
TextObject textObject =newTextObject();
textObject.text= "你分享内容的描述"+“分享网页的话加上网络地址”;
textObject.title= getTitle();
//创建图片消息对象,如果只分享文字和网页就不用加图片
WeiboMultiMessage message =newWeiboMultiMessage();
ImageObject imageObject =newImageObject();
// 设置 Bitmap 类型的图片到视频对象里 设置缩略图。 注意:最终压缩过的缩略图大小 不得超过 32kb。
Bitmap bitmap = BitmapFactory.decodeResource(getResources() , R.drawable.test);
imageObject.setImageObject(bitmap);
message.textObject= textObject;
message.imageObject= imageObject;
message.mediaObject= mediaObj;
shareHandler.shareMessage(message,false);
}
其中的bitmap是网络图片时需要异步请求处理,我用的Glide
的异步图片加载代码如下:
SimpleTarget target =newSimpleTarget() {
@Override
public voidonResourceReady(Bitmap bitmap,GlideAnimation glideAnimation) {
//这里是主线程处理上面分享的逻辑
WebpageObject mediaObj =newWebpageObject();
//创建文本消息对象
TextObject textObject =newTextObject();
textObject.text= "你分享内容的描述"+“分享网页的话加上网络地址”;
textObject.title= getTitle();
//创建图片消息对象
WeiboMultiMessage message =newWeiboMultiMessage();
ImageObject imageObject =newImageObject();
// 设置 Bitmap 类型的图片到视频对象里 设置缩略图。 注意:最终压缩过的缩略图大小 不得超过 32kb。
imageObject.setImageObject(bitmap);
message.textObject= textObject;
message.imageObject= imageObject;
message.mediaObject= mediaObj;
shareHandler.shareMessage(message,false);
}
};
Glide.with(activity).load(“图片URL”).asBitmap().into(target);
因为我们做的是影视类的app,所以希望直接分享视频到微博就可以正常播放,但目前版本的SDK还不支持分享视频,所以只能是分享视频网页。
之前都是用的shareSDK就是包含了各家三方平台的分享,但是做了一次下来发现其实ShareSDK并不算好用,另一个三方再给封装一层,不仅会出一些无法解释和自己无法解决的bug还会让真个项目包增大不少,长远考虑建议还是用一个一个的去集成比价合适。