目录
ShareSDK分享配置
build.gradle配置:如下
/**
* ShareSDK分享
* 官网:http://www.mob.com/
*
* 文档地址:
* http://www.mob.com/wiki/detailed?wiki=ShareSDK_Android_Title_ksjc&id=14
*
* 使用方法:
* 1.打开项目根目录的build.gradle,在buildscript–>dependencies 模块下面添加 classpath
* classpath "com.mob.sdk:MobSDK:2018.0319.1724"
* 2、app的gradle下添加
* apply from: 'share.gradle'
* 3、新建xxx.xxx.xxx.share包
* 复制工具类ShareSdkUtils和实体类ShareData到该包下
* 4、完善下面devInfo中的各分享平台相关信息
*
*/
//2.在使用到Mob产品的module下面的build.gradle文件里面添加如下引用
apply plugin: 'com.mob.sdk'
//3.添加MobSDK方法,配置mob的key和秘钥
// (与第2步是一个gradle中;注意:MobSDK方法是配置到文件根目录,与android并列,不要配置到android里面哦)
MobSDK {
appKey ""//mob官方申请的Appkey
appSecret ""//mob官方申请的Appkey对应的AppSecret
//4.添加ShareSDK平台,Gradle集成方式可以在Mob产品的module下面的build.gradle文件里面配置ShareSDK各个社交平台的key信息
ShareSDK {
gui false //ShareSDK默认会添加OnekeyShare库,如果您不需要这个库,可以在ShareSDK下设置“gui false”来关闭OnekeyShare
loopShare false// 是否闭环分享
devInfo {//来自社交平台的应用信息,
// 完整的各个平台参数:https://github.com/MobClub/ShareSDK-for-Android/blob/master/SampleFresh/MobSDK.gradle
// 具体字段参数说明:http://wiki.mob.com/sdk-share-android-3-0-0/
QQ {
appId ""
appKey ""
bypassApproval false //是否绕过审核
}
QZone {
appId ""
appKey ""
bypassApproval false
}
Wechat {
appId ""
appSecret ""
//BypassApproval是绕过审核的标记,设置为true后AppId将被忽略,故不经过审核的应用也可以执行分享,但是仅限于分享文字和图片,不能分享其他类型,默认值为false。
bypassApproval false
}
WechatMoments {
appId ""
appSecret ""
bypassApproval false
}
SinaWeibo {
appKey ""
appSecret ""
callbackUri ""//微博开放平台:应用信息-高级信息-OAuth2.0授权设置的RedirectUrl
}
}
}
}
ShareSdkUtils工具类
package cn.appoa.keyoule.share;
import android.content.Context;
import android.text.TextUtils;
import com.mob.MobSDK;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.tencent.qq.QQ;
import cn.sharesdk.wechat.friends.Wechat;
import cn.sharesdk.wechat.moments.WechatMoments;
/**
* ShareSdk封装工具类
*/
public final class ShareSdkUtils {
/**
* 平台名称:1、微信;2、微信朋友圈;3、QQ;
*/
public static String[] PlatformName = {"",
Wechat.NAME, WechatMoments.NAME, QQ.NAME};
/**
* 5.初始化MobSDK
* 如果您没有在AndroidManifest中设置appliaction的类名,
* MobSDK会将这个设置为com.mob.MobApplication,
* 但如果您设置了,请在您自己的Application类中调用此方法
*
* @param appContext
*/
public static void initShare(Context appContext) {
MobSDK.init(appContext);
}
/**
* 第三方登录
*
* @param nameId 平台名称Id
* @param listener 登录事件回调
*/
public static void thirdLogin(int nameId, PlatformActionListener listener) {
try {
thirdLogin(PlatformName[nameId], listener);
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}
/**
* 第三方登录
*
* @param name 平台名称
* @param listener 登录事件回调
*/
public static void thirdLogin(String name, PlatformActionListener listener) {
if (!TextUtils.isEmpty(name)) {
Platform platform = ShareSDK.getPlatform(name);
if (platform.isAuthValid()) {
platform.removeAccount(true);// 移除授权
}
platform.SSOSetting(false);// 设置false表示使用SSO授权方式(使用了SSO授权后,有客户端的都会优先启用客户端授权,没客户端的则任然使用网页版进行授权)
platform.setPlatformActionListener(listener);
// platform.authorize();//单独授权
platform.showUser(null);// 授权并获取用户信息
}
}
/**
* 退出第三方登录
*
* @param nameId 平台名称Id
*/
public static void thirdLogout(int nameId) {
try {
thirdLogout(PlatformName[nameId]);
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}
/**
* 退出第三方登录
*
* @param name 平台名称
*/
public static void thirdLogout(String name) {
if (!TextUtils.isEmpty(name)) {
Platform platform = ShareSDK.getPlatform(name);
if (platform.isAuthValid()) {
platform.removeAccount(true);// 移除授权
}
}
// 如果要删除授权信息,重新授权
ShareSDK.removeCookieOnAuthorize(true);
}
/**
* 分享网页
*
* @param nameId 平台名称Id
* @param data 分享数据
* @param listener 分享事件回调
*/
public static void shareUrl(int nameId, ShareData data, PlatformActionListener listener) {
try {
shareUrl(PlatformName[nameId], data, listener);
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}
/**
* 分享网页
*
* @param name 平台名称
* @param data 分享数据
* @param listener 分享事件回调
*/
public static void shareUrl(String name, ShareData data, PlatformActionListener listener) {
if (data == null) {
return;
}
Platform.ShareParams sp = new Platform.ShareParams();
if (TextUtils.equals(name, QQ.NAME)) {
sp.setTitle(data.title);
sp.setTitleUrl(data.titleUrl);
sp.setText(data.text);
if (!TextUtils.isEmpty(data.imageUrl)) {
sp.setImageUrl(data.imageUrl);
} else if (!TextUtils.isEmpty(data.imagePath)) {
sp.setImagePath(data.imagePath);
}
} else if (TextUtils.equals(name, Wechat.NAME) ||
TextUtils.equals(name, WechatMoments.NAME)) {
sp.setShareType(Platform.SHARE_WEBPAGE);
sp.setTitle(data.title);
sp.setText(data.text);
if (!TextUtils.isEmpty(data.imageUrl)) {
sp.setImageUrl(data.imageUrl);
} else if (!TextUtils.isEmpty(data.imagePath)) {
sp.setImagePath(data.imagePath);
} else if (data.imageData != null) {
sp.setImageData(data.imageData);
}
sp.setUrl(data.url);
}
Platform platform = ShareSDK.getPlatform(name);
platform.setPlatformActionListener(listener);
platform.share(sp);
}
/**
* 分享图片
*
* @param nameId 平台名称Id
* @param data 分享数据
* @param listener 分享事件回调
*/
public static void sharePic(int nameId, ShareData data, PlatformActionListener listener) {
try {
sharePic(PlatformName[nameId], data, listener);
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}
/**
* 分享图片
*
* @param name 平台名称
* @param data 分享数据
* @param listener 分享事件回调
*/
public static void sharePic(String name, ShareData data, PlatformActionListener listener) {
if (data == null) {
return;
}
if (TextUtils.isEmpty(data.imageUrl) &&
TextUtils.isEmpty(data.imagePath) && data.imageData == null) {
return;
}
Platform.ShareParams sp = new Platform.ShareParams();
if (TextUtils.equals(name, Wechat.NAME) ||
TextUtils.equals(name, WechatMoments.NAME)) {
sp.setShareType(Platform.SHARE_IMAGE);
}
if (!TextUtils.isEmpty(data.imageUrl)) {
sp.setImageUrl(data.imageUrl);
} else if (!TextUtils.isEmpty(data.imagePath)) {
sp.setImagePath(data.imagePath);
} else if (data.imageData != null) {
sp.setImageData(data.imageData);
}
Platform platform = ShareSDK.getPlatform(name);
platform.setPlatformActionListener(listener);
platform.share(sp);
}
}
ShareData实体类
package cn.appoa.keyoule.share;
import android.graphics.Bitmap;
import java.io.Serializable;
/**
* 分享数据
*
* @see http://www.mob.com/wiki/detailed?wiki=ShareSDK_Android_APISHARE_title_dsfptfxcssm&id=14
* <p>
* 有imageUrl(”网络图片链接”)、imagePath(“/sdcard/abc.jpg”)、imageData(bitmap)是三选一
*/
public class ShareData implements Serializable {
//QQ分享
public String title;//最多30个字符
public String titleUrl;
public String text;//最多40个字符
public String imagePath;
public String imageUrl;
//QQ空间发表说说
//public String text;
//public String imagePath;
//public String imageUrl;
public String site;
public String siteUrl;
//QQ空间分享图文(分享时一定要携带title、titleUrl、site、siteUrl)
//public String title;//最多200个字符
//public String titleUrl;
//public String text;//最多600个字符
//public String imagePath;
//public String imageUrl;
//public String site;//分享此内容的网站名称,仅在QQ空间使用
//public String siteUrl;//分享此内容的网站地址,仅在QQ空间使用
//微信分享网页
//shareType(Platform.SHARE_WEBPAGE)
//public String title;//512Bytes以内
//public String text;//(朋友圈不显示此字段)1KB以内
//public String imagePath;//10M以内(传递的imagePath路径不能超过10KB)
//public String imageUrl;//10KB以内,图片打不开不能分享
public Bitmap imageData;//10M以内
public String url;
//新浪微博分享图文
//public String text;//140字符以内,微博分享链接是将链接写到text内
//public String imagePath;//微博客户端分享图片不能大于2M,仅支持JPEG、GIF、PNG格式
//public String imageUrl;
//public String imageData;
public ShareData() {
}
public ShareData(String title, String text,
String imagePath, String imageUrl, Bitmap imageData, String url) {
this.title = title;
this.titleUrl = url;
this.text = text;
this.imagePath = imagePath;
this.imageUrl = imageUrl;
this.site = title;
this.siteUrl = url;
this.imageData = imageData;
this.url = url;
}
/**
* 设置分享内容
*/
public void setShareData(String title, String text,
String imagePath, String imageUrl, Bitmap imageData, String url) {
this.title = title;
this.titleUrl = url;
this.text = text;
this.imagePath = imagePath;
this.imageUrl = imageUrl;
this.site = title;
this.siteUrl = url;
this.imageData = imageData;
this.url = url;
}
}