package com.qxinli.umeng; import android.app.Activity; import android.content.Context; import android.content.Intent; import com.qxinli.umeng.login.AuthCallback; import com.qxinli.umeng.login.BaseInfo; import com.qxinli.umeng.login.QQInfo; import com.qxinli.umeng.login.SinaInfo; import com.qxinli.umeng.login.WeixinInfo; import com.umeng.analytics.MobclickAgent; import com.umeng.analytics.social.UMPlatformData; import com.umeng.socialize.Config; import com.umeng.socialize.PlatformConfig; import com.umeng.socialize.ShareAction; import com.umeng.socialize.UMAuthListener; import com.umeng.socialize.UMShareAPI; import com.umeng.socialize.UMShareListener; import com.umeng.socialize.bean.SHARE_MEDIA; import com.umeng.socialize.media.UMImage; import com.umeng.socialize.media.UMVideo; import com.umeng.socialize.media.UMusic; import java.util.Map; /** * Created by Administrator on 2017/2/14 0014. */ public class UmengUtil { private static Context context; private static UMShareAPI umShareAPI; private static SHARE_MEDIA[] shareMedias ;//SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN,SHARE_MEDIA.QZONE,SHARE_MEDIA.WEIXIN_CIRCLE public static void init(Context context1,String sinaCallbackUrl,boolean degbug,SHARE_MEDIA... shareMediaList){ context = context1; // UMShareAPI.get(context1); Config.REDIRECT_URL = sinaCallbackUrl;//http://sns.whalecloud.com/sina2/callback shareMedias = shareMediaList; Config.isJumptoAppStore = true; Config.DEBUG = degbug; umShareAPI = UMShareAPI.get(context1); //对应平台没有安装的时候跳转转到应用商店下载,其中qq 微信会跳转到下载界面进行下载,其他应用会跳到应用商店进行下载 //友盟统计 MobclickAgent.setScenarioType(context, MobclickAgent.EScenarioType. E_UM_NORMAL); } public static void setKeySecretWeixin(String key,String secret){ PlatformConfig.setWeixin(key,secret); } public static void setKeySecretQQ(String key,String secret){ PlatformConfig.setQQZone(key,secret); } public static void setKeySecretSina(String key,String secret){ PlatformConfig.setSinaWeibo(key,secret); } public static void onActivityResult(Activity activity,int requestCode, int resultCode, Intent data) { UMShareAPI.get(activity).onActivityResult(requestCode, resultCode, data); } public static void onDestroy(Activity activity) { UMShareAPI.get(activity).release(); } public static void shareTxt(Activity activity, final String uid, String title, String desc, String thumbUrl, String targetUrl, final ShareCallback callback){ share(0,activity,uid,title,desc,"",thumbUrl,targetUrl,callback); } /** * 自带分享的统计,其中uid是app本身的账户系统的id * @param type * @param activity * @param uid * @param title * @param desc * @param thumbUrl * @param mediaUrl * @param targetUrl * @param callback */ private static void share(int type,Activity activity, final String uid, String title, String desc, String thumbUrl, String mediaUrl, String targetUrl, final ShareCallback callback){ ShareAction action = new ShareAction(activity); if(type==0){ action.withMedia(new UMImage(activity, mediaUrl)) ; }else if(type == 1){ UMusic music = new UMusic(mediaUrl); music.setTitle(title);//音乐的标题 music.setThumb(new UMImage(activity, thumbUrl));//音乐的缩略图 music.setDescription(desc);//音乐的描述 action.withMedia(music); }else if(type==2){ UMVideo music = new UMVideo (mediaUrl); music.setTitle(title);//音乐的标题 music.setThumb(new UMImage(activity, thumbUrl));//音乐的缩略图 music.setDescription(desc);//音乐的描述 action.withMedia(music); } action.withTitle(title) .withText(desc) .withTargetUrl(targetUrl) .setDisplayList(shareMedias) .setCallback(new UMShareListener() { @Override public void onResult(SHARE_MEDIA share_media) { UMPlatformData.UMedia media = UMPlatformData.UMedia.SINA_WEIBO; if(share_media ==SHARE_MEDIA.QQ){ media = UMPlatformData.UMedia.TENCENT_QQ; }else if(share_media ==SHARE_MEDIA.SINA){ media = UMPlatformData.UMedia.SINA_WEIBO; }else if(share_media ==SHARE_MEDIA.WEIXIN){ media = UMPlatformData.UMedia.WEIXIN_FRIENDS; }else if(share_media ==SHARE_MEDIA.WEIXIN_CIRCLE){ media = UMPlatformData.UMedia.WEIXIN_CIRCLE; } else if(share_media ==SHARE_MEDIA.QZONE){ media = UMPlatformData.UMedia.TENCENT_QZONE; } UMPlatformData platform = new UMPlatformData(media, uid); MobclickAgent.onSocialEvent(context, platform); callback.onResult(share_media); } @Override public void onError(SHARE_MEDIA share_media, Throwable throwable) { callback.onError(share_media,throwable); } @Override public void onCancel(SHARE_MEDIA share_media) { callback.onCancel(share_media); } }) .open(); } public static void shareMusic(Activity activity, final String uid, String title, String desc, String thumbUrl, String musicUrl, String targetUrl, final ShareCallback callback){ share(1,activity,uid,title,desc,thumbUrl,musicUrl,targetUrl,callback); } public static void shareVideo(Activity activity, final String uid, String title, String desc, String thumbUrl, String musicUrl, String targetUrl, final ShareCallback callback){ share(2,activity,uid,title,desc,thumbUrl,musicUrl,targetUrl,callback); } public static void loginBySina(Activity activity, AuthCallback callback){ login(activity,SHARE_MEDIA.SINA,callback); } public static void loginByWeixin(Activity activity, AuthCallback callback){ login(activity,SHARE_MEDIA.WEIXIN,callback); } public static void loginByQQ(Activity activity, AuthCallback callback){ login(activity,SHARE_MEDIA.QQ,callback); } private static void login(Activity activity, final SHARE_MEDIA platform, final AuthCallback callback){ umShareAPI.getPlatformInfo(activity, platform, new UMAuthListener() { @Override public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) { BaseInfo info = null; if(share_media == SHARE_MEDIA.SINA){ SinaInfo weixinInfo = new SinaInfo(); weixinInfo.followers_count = map.get("followers_count"); weixinInfo.friends_count = map.get("friends_count"); info = weixinInfo; }else if(share_media == SHARE_MEDIA.QQ){ QQInfo weixinInfo = new QQInfo(); weixinInfo.is_yellow_year_vip = map.get("is_yellow_year_vip"); info = weixinInfo; }else if(share_media == SHARE_MEDIA.WEIXIN){ WeixinInfo weixinInfo = new WeixinInfo(); weixinInfo.openid = map.get("openid"); weixinInfo.country = map.get("country"); info = weixinInfo; } info.accessToken = map.get("accessToken"); info.city = map.get("city"); info.expiration = map.get("expiration"); info.gender = map.get("gender"); info.iconurl = map.get("iconurl"); info.name = map.get("name"); info.province = map.get("province"); info.refreshtoken = map.get("refreshtoken"); info.uid = map.get("uid"); callback.onComplete(i,info); } @Override public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) { callback.onError(i,throwable); } @Override public void onCancel(SHARE_MEDIA share_media, int i) { callback.onCancel(i); } }); } //以下的是统计的api public static void analysisOnResume(Activity activity){ MobclickAgent.onResume(activity); } public static void analysisOnPause(Activity activity){ MobclickAgent.onPause(activity); } public static void onKillProcess(){ MobclickAgent.onKillProcess(context); } public static void analysisOnPageStart(String pageName){ MobclickAgent.onPageStart(pageName); } public static void analysisOnPageEnd(String pageName){ MobclickAgent.onPageEnd(pageName); } public static void onProfileSignIn(String ID) { MobclickAgent.onProfileSignIn(ID); } public static void onProfileSignIn(String provider, String ID) { MobclickAgent.onProfileSignIn(provider,ID); } public static void onProfileSignOff(){ MobclickAgent.onProfileSignOff(); } }