ShareSDK工具類

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
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章