package cn.bidaround.ytcore.qq; import java.util.ArrayList; import android.app.Activity; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; import cn.bidaround.ytcore.YtShareListener; import cn.bidaround.ytcore.data.BaseShare; import cn.bidaround.ytcore.data.ShareData; import cn.bidaround.ytcore.data.YtPlatform; import cn.bidaround.ytcore.util.YtLog; import com.tencent.connect.share.QQShare; import com.tencent.tauth.IUiListener; import com.tencent.tauth.Tencent; import com.tencent.tauth.UiError; /** * 该类实现QQ,QZone分享和回调 * * @author youtui * @since 14/6/19 */ public class QQOpenShare extends BaseShare{ /** qq分享类 */ private Tencent mTencent; /** 判断是qq分享还是qq空间分享 */ private String flag; private YtPlatform platform; private String appName; public QQOpenShare(Activity act, String flag, YtShareListener listener, ShareData shareData) { super(act, shareData, listener); this.flag = flag; init(act); } /** * 初始化,如果没有授权则进行登录授权 */ private void init(Activity act) { // 获取appName ApplicationInfo info = null; try { info = act.getPackageManager().getApplicationInfo(act.getPackageName(), 0); } catch (NameNotFoundException e) { e.printStackTrace(); } appName = (String) act.getPackageManager().getApplicationLabel(info); if ("QQ".equals(flag)) { mTencent = Tencent.createInstance(YtPlatform.PLATFORM_QQ.getAppId(), act); platform = YtPlatform.PLATFORM_QQ; } else if ("Qzone".equals(flag)) { mTencent = Tencent.createInstance(YtPlatform.PLATFORM_QZONE.getAppId(), act); platform = YtPlatform.PLATFORM_QZONE; } } /** * 分享到qq */ public void shareToQQ() { if(shareData!=null){ Bundle params = new Bundle(); if(shareData.getShareType()==ShareData.SHARETYPE_IMAGEANDTEXT){ //图文分享 params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,shareData.getTargetUrl()); YtLog.w("shareToQQ", shareData.getTargetUrl()); // 判断传输的是网络图片还是本地图片 if (shareData.getImagePath() != null) { params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL,shareData.getImagePath()); } else if (shareData.getImageUrl() != null) { params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,shareData.getImageUrl()); } params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName); params.putString(QQShare.SHARE_TO_QQ_TITLE, shareData.getTitle()); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, shareData.getText()); params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, 0); }else if(shareData.getShareType()==ShareData.SHARETYPE_IMAGE){ params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE); if (shareData.getImagePath() != null) { params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL,shareData.getImagePath()); } else if (shareData.getImageUrl() != null) { params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,shareData.getImageUrl()); } params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName); }else if(shareData.getShareType()==ShareData.SHARETYPE_TEXT){ //图文分享 params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,shareData.getTargetUrl()); // 判断传输的是网络图片还是本地图片 if (shareData.getImagePath() != null) { params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL,shareData.getImagePath()); } else if (shareData.getImageUrl() != null) { params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,shareData.getImageUrl()); } params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName); params.putString(QQShare.SHARE_TO_QQ_TITLE, shareData.getTitle()); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, shareData.getText()); params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, 0); }else if(shareData.getShareType()==ShareData.SHARETYPE_MUSIC){ //音乐分享 params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_AUDIO); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,shareData.getTargetUrl()); // 判断传输的是网络图片还是本地图片 if (shareData.getImagePath() != null) { params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL,shareData.getImagePath()); } else if (shareData.getImageUrl() != null) { params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,shareData.getImageUrl()); } params.putString(QQShare.SHARE_TO_QQ_AUDIO_URL, shareData.getMusicUrl()); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName); params.putString(QQShare.SHARE_TO_QQ_TITLE, shareData.getTitle()); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, shareData.getText()); params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, 0); } mTencent.shareToQQ(activity, params, new MyQQShareUIListener()); } } /** * 分享到qq空间 */ public void shareToQzone() { if(shareData!=null){ Bundle params = new Bundle(); if(shareData.getShareType()==ShareData.SHARETYPE_IMAGEANDTEXT){ //QQ空间只支持图文分享 if(shareData.getShareType()==ShareData.SHARETYPE_IMAGEANDTEXT){ params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT); params.putString(QQShare.SHARE_TO_QQ_TITLE, shareData.getTitle()); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, shareData.getText()); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, shareData.getTargetUrl()); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName); ArrayList<String> list = new ArrayList<String>(); // 判断传输的是网络图片还是本地图片 if (shareData.getImageUrl() != null) { list.add(shareData.getImageUrl()); }else if (shareData.getImagePath() != null) { list.add(shareData.getImagePath()); } params.putStringArrayList(QQShare.SHARE_TO_QQ_IMAGE_URL, list); } }else if(shareData.getShareType()==ShareData.SHARETYPE_IMAGE){ params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT); params.putString(QQShare.SHARE_TO_QQ_TITLE, shareData.getTitle()); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, shareData.getTargetUrl()); //YtLog.d("shareToQzone shareData.getTargetUrl()", shareData.getTargetUrl()); ArrayList<String> list = new ArrayList<String>(); // 判断传输的是网络图片还是本地图片 if (shareData.getImageUrl() != null) { list.add(shareData.getImageUrl()); }else if (shareData.getImagePath() != null) { list.add(shareData.getImagePath()); } params.putStringArrayList(QQShare.SHARE_TO_QQ_IMAGE_URL, list); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName); }else if(shareData.getShareType()==ShareData.SHARETYPE_TEXT){ params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT); params.putString(QQShare.SHARE_TO_QQ_TITLE, shareData.getTitle()); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, shareData.getText()); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, shareData.getTargetUrl()); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName); ArrayList<String> list = new ArrayList<String>(); // 判断传输的是网络图片还是本地图片 if (shareData.getImagePath() != null) { list.add(shareData.getImagePath()); } else if (shareData.getImageUrl() != null) { list.add(shareData.getImageUrl()); } params.putStringArrayList(QQShare.SHARE_TO_QQ_IMAGE_URL, list); } mTencent.shareToQzone(activity, params, new MyQQShareUIListener()); } } /** * 分享回调 */ class MyQQShareUIListener implements IUiListener { @Override public void onCancel() { if (listener != null) listener.onCancel(platform); } @Override public void onComplete(Object obj) { YtShareListener.sharePoint(activity, platform.getChannleId(), !shareData.isAppShare()); if (listener != null) listener.onSuccess(platform, obj.toString()); } @Override public void onError(UiError error) { if (listener != null) listener.onError(platform, error.errorMessage); } } }