2、在要是用的module中增加如下引用
dependencies {
…
compile ‘com.github.arvinljw:SocialHelper:v1.0.4’
}
注:如果在该module中使用了v7包,那么可使用exclude命令移除本库的引用避免重复,gson也是一样,大体方法如下
compile (‘com.github.arvinljw:SocialHelper:v1.0.4’){
exclude group: ‘com.android.support’
}
使用
1、相应配置
AndroidManifest.xml配置
添加权限
在application下添加Activity
注:其中需要注意的是,qq配置中 qqAppId换成您申请的qqAppId即可
微信还需要在packageName.wxapi的包下创建WXEntryActivity,具体实现可在这里查看
拷贝过去即可,注意路径,其中主要的处理是在其onResp的时候判断是登录还是分享做出相应的处理,通知本库触发回调
2、获取实例
首先采用外观模式,暴露出来一个SocialHelper,可以通过构建者模式获取实例,调用相关方法,配置回调。
socialHelper = new SocialHelper.Builder()
.setQqAppId(“qqAppId”)
.setWxAppId(“wxAppId”)
.setWxAppSecret(“wxAppSecret”)
.setWbAppId(“wbAppKey”)
.setWbRedirectUrl(“wbRedirectUrl”)
.build();
3、调用相关方法
这里提供了QQ、微信和微博的相应的登录和分享方法
- public void loginQQ(Activity activity, SocialLoginCallback callback)
- public void loginWX(Activity activity, SocialLoginCallback callback)
- public void loginWB(Activity activity, SocialLoginCallback callback)
- public void shareQQ(Activity activity, SocialShareCallback callback, ShareEntity shareInfo)
- public void shareWX(Activity activity, SocialShareCallback callback, ShareEntity shareInfo)
- public void shareWB(Activity activity, SocialShareCallback callback, ShareEntity shareInfo)
这个其实通过名字就能知道是什么意思,就不解释了,需要解释的是参数:
a、传入的Activity
主要是为了回调回来都在当前Activity中处理回调事情,避免在Fragment中去处理,这样也能减少一些工作
注:当然遇到在Fragment中调用登录或者分享的时候,请使用您最熟悉的方式回调到其Activity中处理相关操作
b、传入的回调
这里回调也分为了两种登录回调和分享回调
回调接口如下:
public interface SocialCallback {
void socialError(String msg);
}
public interface SocialLoginCallback extends SocialCallback{
void loginSuccess(ThirdInfoEntity info);
}
public interface SocialShareCallback extends SocialCallback{
void shareSuccess();
}
登录和分享回调失败都会有一个信息返回;
登录成功会将封装的第三方信息返回,包含了常用的昵称,性别,头像,登录平台,更多信息也能在其中找到,详细的含义在Lib中有详细的注释;
分享成功就只有一个回调,便于提示。
c、ShareEntity
这个参数是分享的重点,对于QQ、微信和微博对应着QQShareEntity、WXShareEntity以及WBShareEntity
都可以通过其相应的静态方法创建相应分享类型
-
QQShareEntity
-
createImageTextInfo 图文信息,网页信息
-
createImageInfo 纯图片信息
-
createMusicInfo 音乐信息
-
createAppInfo 应用信息
-
createImageTextInfoToQZone 图文信息到QQ空间
-
WXShareEntity
-
createTextInfo 文本信息
-
createImageInfo 纯图片信息
-
createMusicInfo 音乐信息
-
createVideoInfo 视频信息
-
createWebPageInfo 网页信息
-
WBShareEntity
-
createTextInfo 纯文本信息
-
createImageTextInfo 图文信息
-
createMultiImageInfo 多图信息
-
createVideoInfo 视频信息
-
createWebInfo 网页信息
具体详细的参数以及注释在相应类中都有明确的注释,这里就不过多的展开了;其中有ParamsRequired注解的参数代表必传。
注意,有些不必传的参数,不传虽然也能分享成功,但是有可能会影响分享出去的样式,请自行调试。
4、回调配置
在调用的Activity中配置
//用处:qq登录和分享回调,以及微博登录回调
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null && socialHelper != null) {//qq分享如果选择留在qq,通过home键退出,再进入app则不会有回调
socialHelper.onActivityResult(requestCode, resultCode, data);
}
}
//用处:微博分享回调
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (socialHelper != null) {
socialHelper.onNewIntent(intent);
}
}
至于微信的回调配置,在一开始的时候说的WXEntryActivity的onResp中的处理就是了。
至此使用方式就基本完毕,算下来也就这么四部配置,就能愉快的使用了,当然前提是相应的app申请已经成功。
其中对于SocialHelper的实例,可以像Demo中一样使用一个工具简单封装成单例来使用。