ShareSDK工具类
来源:互联网 发布:ppt美化大师软件 编辑:程序博客网 时间:2024/06/07 12:51
import java.util.HashMap;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.PopupWindow;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.Platform.ShareParams;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.weibo.TencentWeibo;
import cn.sharesdk.wechat.favorite.WechatFavorite;
import cn.sharesdk.wechat.friends.Wechat;
import cn.sharesdk.wechat.moments.WechatMoments;
import com.zftlive.android.MApplication;
import com.zftlive.android.common.share.OnekeyShare;
/**
* ShareSDK工具类
* @version 1.0
*/
public class ToolShareSDK {
private Context mContext;
private static ToolShareSDK instance;
private static final String TAG = "ToolShareSDK";
private ToolShareSDK(){
}
/**
* 对外公开实例化接口
*/
public static ToolShareSDK gainInstance(){
if(null == instance){
instance = new ToolShareSDK();
}
return instance;
}
/**
* 初始化上下文
* @param context 上下文
*/
public ToolShareSDK init(Context context){
this.mContext = context;
return this;
}
/**
* 初始化分享平台,分享不同的平台需要重新初始化
* @param platform 分享平台
*/
public Platform initPlatform(SharePlatform type){
Platform platForm = null;
switch (type) {
case SinaWeibo:
platForm = ShareSDK.getPlatform(MApplication.gainContext(), SinaWeibo.NAME);
break;
case TencentWeibo:
platForm = ShareSDK.getPlatform(MApplication.gainContext(), TencentWeibo.NAME);
break;
case Wechat:
//分享给朋友圈
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("BypassApproval", false);
ShareSDK.setPlatformDevInfo("Wechat", map);
ShareSDK.setPlatformDevInfo("WechatMoments", map);
platForm = ShareSDK.getPlatform(MApplication.gainContext(), WechatMoments.NAME);
break;
default:
break;
}
//设置分享动作监听器
if(null != platForm){
platForm.setPlatformActionListener(new SharePlatformActionListener());
}
return platForm;
}
/**
* 分享内容
* @param platForm 分享平台
* @param parms 分享参数 <a>http://wiki.mob.com/Android_%E4%B8%8D%E5%90%8C%E5%B9%B3%E5%8F%B0%E5%88%86%E4%BA%AB%E5%86%85%E5%AE%B9%E7%9A%84%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E#.E6.96.B0.E6.B5.AA.E5.BE.AE.E5.8D.9A</a>
* @param pw 弹出分享的POP窗口
*/
public void share(Platform platForm,ShareParams parms,PopupWindow pw){
try {
//微信分享
if(platForm.getName().equals(WechatMoments.NAME) || platForm.getName().equals(Wechat.NAME)|| platForm.getName().equals(WechatFavorite.NAME)){
platForm.setPlatformActionListener(new SharePlatformActionListener(pw));
platForm.share(parms);
}else{
final OnekeyShare oks = new OnekeyShare();
// 分享时Notification的图标和文字
oks.setNotification(ToolResource.getDrawableId("ic_launcher"), "正在分享");
oks.setAddress(parms.getAddress());
// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
oks.setTitle(parms.getTitle());
// titleUrl是标题的网络链接,仅在人人网和QQ空间使用
oks.setTitleUrl(parms.getTitleUrl());
// text是分享文本,所有平台都需要这个字段
oks.setText(parms.getText());
// url仅在微信(包括好友和朋友圈)中使用
oks.setUrl(parms.getUrl());
// comment是我对这条分享的评论,仅在人人网和QQ空间使用
oks.setComment(parms.getComment());
// site是分享此内容的网站名称,仅在QQ空间使用
oks.setSite(parms.getSite());
// siteUrl是分享此内容的网站地址,仅在QQ空间使用
oks.setSiteUrl(parms.getSiteUrl());
//设置当前位置
//oks.setLatitude(23.056081f);
//oks.setLongitude(113.385708f);
//设置是否无编辑界面分享
oks.setSilent(true);
//分享平台
if (platForm != null) {
oks.setPlatform(platForm.getName());
}
// 令编辑页面显示为Dialog模式
oks.setDialogMode();
// 在自动授权时可以禁用SSO方式
oks.disableSSOWhenAuthorize();
// 去除注释,则快捷分享的操作结果将通过OneKeyShareCallback回调
oks.setCallback(new SharePlatformActionListener(pw));
/*
oks.setShareContentCustomizeCallback(new ShareContentCustomizeDemo());
// 去除注释,演示在九宫格设置自定义的图标
Bitmap logo = BitmapFactory.decodeResource(menu.getResources(), R.drawable.ic_launcher);
String label = menu.getResources().getString(R.string.app_name);
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
String text = "Customer Logo -- ShareSDK " + ShareSDK.getSDKVersionName();
Toast.makeText(menu.getContext(), text, Toast.LENGTH_SHORT).show();
oks.finish();
}
};
oks.setCustomerLogo(logo, label, listener);
// 去除注释,则快捷分享九宫格中将隐藏新浪微博和腾讯微博
oks.addHiddenPlatform(SinaWeibo.NAME);
oks.addHiddenPlatform(TencentWeibo.NAME);
// 为EditPage设置一个背景的View
oks.setEditPageBackground(getPage());
*/
oks.show(mContext);
}
} catch (Exception e) {
Log.e(TAG, "分享出现失败,原因:"+e.getMessage());
e.printStackTrace();
}
}
/**
* 平台分享行为监听器
*/
public class SharePlatformActionListener implements PlatformActionListener{
private PopupWindow pw;
private Handler mShareHandle;
public final static int ACTION_CANCEL = -1;
public final static int ACTION_COMPLETE = 0;
public final static int ACTION_ERROR = 1;
public SharePlatformActionListener() {
this(null);
}
public SharePlatformActionListener(PopupWindow popWin) {
this.pw = popWin;
mShareHandle = new MyShareHandler();
}
@Override
public void onCancel(Platform arg0, int arg1) {
//组装消息
Message msg = mShareHandle.obtainMessage();
msg.what = ACTION_CANCEL;
msg.obj = "取消了"+arg0.getName()+"分享操作";
mShareHandle.sendMessage(msg);
//记录日志
Log.i(TAG, "取消了分享操作 Platform=" + arg0.toString() + "arg1="+arg1);
}
@Override
public void onComplete(Platform arg0, int arg1,HashMap<String, Object> arg2) {
//组装消息
Message msg = mShareHandle.obtainMessage();
msg.what = ACTION_COMPLETE;
msg.obj = "分享成功";
mShareHandle.sendMessage(msg);
//记录日志
Log.i(TAG, "分享完成 Platform=" + arg0.toString() + "arg1="+arg1 + "HashMap="+arg2.toString());
}
@Override
public void onError(Platform arg0, int arg1, Throwable arg2) {
//组装消息
Message msg = mShareHandle.obtainMessage();
msg.what = ACTION_COMPLETE;
msg.obj = "分享失败,原因:"+arg2.getMessage().replaceAll("null", "未知异常");
mShareHandle.sendMessage(msg);
//记录日志
Log.i(TAG, "分享失败 Platform=" + arg0.toString() + "arg1="+arg1 + "异常="+arg2.toString());
}
/**
* 消息处理Handle
*/
private class MyShareHandler extends Handler{
@Override
public void handleMessage(Message msg) {
//提示信息
ToolToast.showShort(mContext,msg.obj.toString());
//关闭弹出pop
if(msg.what != ACTION_ERROR && null != pw){
if(pw.isShowing())
pw.dismiss();
}
//关闭等待对话框
ToolAlert.closeLoading();
super.handleMessage(msg);
}
}
};
/**定义标题栏按钮眉举类型**/
public enum SharePlatform {
SinaWeibo,TencentWeibo,Wechat
}
}
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.PopupWindow;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.Platform.ShareParams;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.weibo.TencentWeibo;
import cn.sharesdk.wechat.favorite.WechatFavorite;
import cn.sharesdk.wechat.friends.Wechat;
import cn.sharesdk.wechat.moments.WechatMoments;
import com.zftlive.android.MApplication;
import com.zftlive.android.common.share.OnekeyShare;
/**
* ShareSDK工具类
* @version 1.0
*/
public class ToolShareSDK {
private Context mContext;
private static ToolShareSDK instance;
private static final String TAG = "ToolShareSDK";
private ToolShareSDK(){
}
/**
* 对外公开实例化接口
*/
public static ToolShareSDK gainInstance(){
if(null == instance){
instance = new ToolShareSDK();
}
return instance;
}
/**
* 初始化上下文
* @param context 上下文
*/
public ToolShareSDK init(Context context){
this.mContext = context;
return this;
}
/**
* 初始化分享平台,分享不同的平台需要重新初始化
* @param platform 分享平台
*/
public Platform initPlatform(SharePlatform type){
Platform platForm = null;
switch (type) {
case SinaWeibo:
platForm = ShareSDK.getPlatform(MApplication.gainContext(), SinaWeibo.NAME);
break;
case TencentWeibo:
platForm = ShareSDK.getPlatform(MApplication.gainContext(), TencentWeibo.NAME);
break;
case Wechat:
//分享给朋友圈
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("BypassApproval", false);
ShareSDK.setPlatformDevInfo("Wechat", map);
ShareSDK.setPlatformDevInfo("WechatMoments", map);
platForm = ShareSDK.getPlatform(MApplication.gainContext(), WechatMoments.NAME);
break;
default:
break;
}
//设置分享动作监听器
if(null != platForm){
platForm.setPlatformActionListener(new SharePlatformActionListener());
}
return platForm;
}
/**
* 分享内容
* @param platForm 分享平台
* @param parms 分享参数 <a>http://wiki.mob.com/Android_%E4%B8%8D%E5%90%8C%E5%B9%B3%E5%8F%B0%E5%88%86%E4%BA%AB%E5%86%85%E5%AE%B9%E7%9A%84%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E#.E6.96.B0.E6.B5.AA.E5.BE.AE.E5.8D.9A</a>
* @param pw 弹出分享的POP窗口
*/
public void share(Platform platForm,ShareParams parms,PopupWindow pw){
try {
//微信分享
if(platForm.getName().equals(WechatMoments.NAME) || platForm.getName().equals(Wechat.NAME)|| platForm.getName().equals(WechatFavorite.NAME)){
platForm.setPlatformActionListener(new SharePlatformActionListener(pw));
platForm.share(parms);
}else{
final OnekeyShare oks = new OnekeyShare();
// 分享时Notification的图标和文字
oks.setNotification(ToolResource.getDrawableId("ic_launcher"), "正在分享");
oks.setAddress(parms.getAddress());
// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
oks.setTitle(parms.getTitle());
// titleUrl是标题的网络链接,仅在人人网和QQ空间使用
oks.setTitleUrl(parms.getTitleUrl());
// text是分享文本,所有平台都需要这个字段
oks.setText(parms.getText());
// url仅在微信(包括好友和朋友圈)中使用
oks.setUrl(parms.getUrl());
// comment是我对这条分享的评论,仅在人人网和QQ空间使用
oks.setComment(parms.getComment());
// site是分享此内容的网站名称,仅在QQ空间使用
oks.setSite(parms.getSite());
// siteUrl是分享此内容的网站地址,仅在QQ空间使用
oks.setSiteUrl(parms.getSiteUrl());
//设置当前位置
//oks.setLatitude(23.056081f);
//oks.setLongitude(113.385708f);
//设置是否无编辑界面分享
oks.setSilent(true);
//分享平台
if (platForm != null) {
oks.setPlatform(platForm.getName());
}
// 令编辑页面显示为Dialog模式
oks.setDialogMode();
// 在自动授权时可以禁用SSO方式
oks.disableSSOWhenAuthorize();
// 去除注释,则快捷分享的操作结果将通过OneKeyShareCallback回调
oks.setCallback(new SharePlatformActionListener(pw));
/*
oks.setShareContentCustomizeCallback(new ShareContentCustomizeDemo());
// 去除注释,演示在九宫格设置自定义的图标
Bitmap logo = BitmapFactory.decodeResource(menu.getResources(), R.drawable.ic_launcher);
String label = menu.getResources().getString(R.string.app_name);
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
String text = "Customer Logo -- ShareSDK " + ShareSDK.getSDKVersionName();
Toast.makeText(menu.getContext(), text, Toast.LENGTH_SHORT).show();
oks.finish();
}
};
oks.setCustomerLogo(logo, label, listener);
// 去除注释,则快捷分享九宫格中将隐藏新浪微博和腾讯微博
oks.addHiddenPlatform(SinaWeibo.NAME);
oks.addHiddenPlatform(TencentWeibo.NAME);
// 为EditPage设置一个背景的View
oks.setEditPageBackground(getPage());
*/
oks.show(mContext);
}
} catch (Exception e) {
Log.e(TAG, "分享出现失败,原因:"+e.getMessage());
e.printStackTrace();
}
}
/**
* 平台分享行为监听器
*/
public class SharePlatformActionListener implements PlatformActionListener{
private PopupWindow pw;
private Handler mShareHandle;
public final static int ACTION_CANCEL = -1;
public final static int ACTION_COMPLETE = 0;
public final static int ACTION_ERROR = 1;
public SharePlatformActionListener() {
this(null);
}
public SharePlatformActionListener(PopupWindow popWin) {
this.pw = popWin;
mShareHandle = new MyShareHandler();
}
@Override
public void onCancel(Platform arg0, int arg1) {
//组装消息
Message msg = mShareHandle.obtainMessage();
msg.what = ACTION_CANCEL;
msg.obj = "取消了"+arg0.getName()+"分享操作";
mShareHandle.sendMessage(msg);
//记录日志
Log.i(TAG, "取消了分享操作 Platform=" + arg0.toString() + "arg1="+arg1);
}
@Override
public void onComplete(Platform arg0, int arg1,HashMap<String, Object> arg2) {
//组装消息
Message msg = mShareHandle.obtainMessage();
msg.what = ACTION_COMPLETE;
msg.obj = "分享成功";
mShareHandle.sendMessage(msg);
//记录日志
Log.i(TAG, "分享完成 Platform=" + arg0.toString() + "arg1="+arg1 + "HashMap="+arg2.toString());
}
@Override
public void onError(Platform arg0, int arg1, Throwable arg2) {
//组装消息
Message msg = mShareHandle.obtainMessage();
msg.what = ACTION_COMPLETE;
msg.obj = "分享失败,原因:"+arg2.getMessage().replaceAll("null", "未知异常");
mShareHandle.sendMessage(msg);
//记录日志
Log.i(TAG, "分享失败 Platform=" + arg0.toString() + "arg1="+arg1 + "异常="+arg2.toString());
}
/**
* 消息处理Handle
*/
private class MyShareHandler extends Handler{
@Override
public void handleMessage(Message msg) {
//提示信息
ToolToast.showShort(mContext,msg.obj.toString());
//关闭弹出pop
if(msg.what != ACTION_ERROR && null != pw){
if(pw.isShowing())
pw.dismiss();
}
//关闭等待对话框
ToolAlert.closeLoading();
super.handleMessage(msg);
}
}
};
/**定义标题栏按钮眉举类型**/
public enum SharePlatform {
SinaWeibo,TencentWeibo,Wechat
}
}
0 0
- ShareSDK工具类
- ShareSdk分享工具类
- ShareSdk的一个分享工具类
- ShareSDK
- shareSDk
- shareSDK
- shareSDK
- ShareSDK
- shareSDK
- ShareSDK
- sharesdk
- ShareSDK
- ShareSDK
- ShareSDK
- shareSDK
- ShareSDK
- ShareSDK
- ShareSDK
- 目标检测简要综述
- 浙大PAT 1033
- Android 中 HttpURLConnection 使用详解
- jquery中attr和prop的区别
- shell 命令:tr 常见命令和介绍
- ShareSDK工具类
- ubuntu14.04远程登录服务-ssh的安装和配置
- 关于实现Extjs动态加载类的方式实现
- C++Primer:Break、Continue、Goto、Try/异常处理
- 解决:dubbo找不到dubbo.xsd报错
- Android学习之Material Design之style
- Start
- 写自己的数组工具类
- 连接器脚本格式注意