1,从友盟官网上下载sdk,勾选自己想要的
2.将jar包倒进项目
注意:友盟的jar包和QQ互联自己的一样,不要重复导入
3.在各个平台申请appkey,发现qq最方便,新浪和微信申请好麻烦
4.加入必要的权限
5.加入第三方的activity
QQ:
微信:
注意:WXEntryActivity是自己创建的
public class WXEntryActivity extends WXCallbackActivity { }
新浪:
最后是友盟自己的:
6.初始化友盟,在application中
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //初始化友盟SDK UMShareAPI.get(this);//初始化sd UMConfigure.init(this, "5b5eb6e78f4a9d45230000a6", "Planet", UMConfigure.DEVICE_TYPE_PHONE,""); //开启debug模式,方便定位错误,具体错误检查方式可以查看 //http://dev.umeng.com/social/android/quick-integration的报错必看,正式发布,请关闭该模式 UMConfigure.setLogEnabled(true); //微信 PlatformConfig.setWeixin("wxdc1e388c11111234", "3baf1193c85774b3fd9d11117d76cab0"); //新浪微博(第三个参数为回调地址) PlatformConfig.setSinaWeibo("3519281234", "e8c27fcc18e170158c08e7f11c804ca9", "http://sns.whalecloud.com"); //应用宝开放平台 APP ID APP KEY PlatformConfig.setQQZone("101481234", "5d34e3b76972a5b2f4ece9046b9698a9"); } }
7.在activity中的操作,登入与分享的监听
/** * 友盟开始授权(登入) */ public static void shareLoginUmeng(final Activity activity, SHARE_MEDIA share_media_type) { UMShareAPI.get(activity).getPlatformInfo(activity, share_media_type, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { Log.e("授权开始", "onStart授权开始: "); } @Override public void onComplete(SHARE_MEDIA share_media, int i, Mapmap) { //sdk是6.4.5的,但是获取值的时候用的是6.2以前的(access_token)才能获取到值,未知原因 String uid = map.get("uid"); String openid = map.get("openid");//微博没有 String unionid = map.get("unionid");//微博没有 String access_token = map.get("access_token"); String refresh_token = map.get("refresh_token");//微信,qq,微博都没有获取到 String expires_in = map.get("expires_in"); String name = map.get("name");//名称 String gender = map.get("gender");//性别 String iconurl = map.get("iconurl");//头像地址 Log.e("openid", "onStart授权完成: " + openid); Log.e("unionid", "onStart授权完成: " + unionid); Log.e("access_token", "onStart授权完成: " + access_token); Log.e("refresh_token", "onStart授权完成: " + refresh_token); Log.e("expires_in", "onStart授权完成: " + expires_in); Log.e("uid", "onStart授权完成: " + uid); Log.e("name", "onStart授权完成: " + name); Log.e("gender", "onStart授权完成: " + gender); Log.e("iconurl", "onStart授权完成: " + iconurl); } @Override public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) { Toast.makeText(activity, "授权失败", Toast.LENGTH_LONG).show(); Log.e("onError", "onError: " + "授权失败"); } @Override public void onCancel(SHARE_MEDIA share_media, int i) { Toast.makeText(activity, "授权取消", Toast.LENGTH_LONG).show(); Log.e("onError", "onError: " + "授权取消"); } }); } /** * 友盟取消授权(登入) */ public static void umengDeleteOauth(Activity activity, SHARE_MEDIA share_media_type) { UMShareAPI.get(activity).deleteOauth(activity, share_media_type, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { //开始授权 Log.e("onStart", "onStart: "); } @Override public void onComplete(SHARE_MEDIA share_media, int i, Map map) { //取消授权成功 i=1 Log.e("onComplete", "onComplete: "); } @Override public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) { //授权出错 Log.e("onError", "onError: "); } @Override public void onCancel(SHARE_MEDIA share_media, int i) { //取消授权 Log.e("onCancel", "onCancel: "); } }); } /** * 友盟分享 * 上下文activity、分享的链接、标题、内容、类型 * 若是要分享视频、音乐可看官方文档 */ public static void shareWeb(final Activity activity, String WebUrl, String title, String description, SHARE_MEDIA platform) { UMImage thumb = new UMImage(activity, R.mipmap.ic_launcher); UMWeb web = new UMWeb(WebUrl);//连接地址(注意链接开头必须包含http) web.setTitle(title);//标题 web.setDescription(description);//描述 web.setThumb(thumb);//缩略图 new ShareAction(activity) //分享的平台 .setPlatform(platform) .withMedia(web) .setCallback(new UMShareListener() { /** * @descrption 分享开始的回调 * @param share_media 平台类型 */ @Override public void onStart(SHARE_MEDIA share_media) { Log.e("onStart", "onStart开始分享的平台: " + share_media); } /** * @descrption 分享成功的回调 * @param share_media 平台类型 */ @Override public void onResult(final SHARE_MEDIA share_media) { activity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(activity, " 分享成功 ", Toast.LENGTH_SHORT).show(); Log.e("分享成功", "onStart分享成功的平台: " + share_media); } }); } /** * @descrption 分享失败的回调 * @param share_media 平台类型 * @param throwable 错误原因 */ @Override public void onError(final SHARE_MEDIA share_media, final Throwable throwable) { if (throwable != null) { //失败原因 Log.e("失败", "throw:" + throwable.getMessage()); } activity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(activity, share_media + " 分享失败", Toast.LENGTH_SHORT).show(); } }); } /** * @descrption 分享取消的回调 * @param share_media 平台类型 */ @Override public void onCancel(final SHARE_MEDIA share_media) { activity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(activity, " 分享取消 ", Toast.LENGTH_SHORT).show(); } }); } }) .share(); }
8.调用
//取消授权 // UMLoginUtils.umengDeleteOauth(LoginActivity.this,SHARE_MEDIA.QQ); //开始授权 //UMLoginUtils.shareLoginUmeng(LoginActivity.this, SHARE_MEDIA.QQ); // UMLoginUtils.umengDeleteOauth(LoginActivity.this,SHARE_MEDIA.SINA); //UMLoginUtils.shareLoginUmeng(this, SHARE_MEDIA.SINA); //UMLoginUtils.shareWeb(this, "http://www.baidu.com", "Hello Word", "Word", SHARE_MEDIA.QQ); //分享实例 UMLoginUtils.shareWeb(this, "http://www.baidu.com", "Hello Word", "Word", SHARE_MEDIA.QZONE); //shareWeb(this, "", "Hello Word", "Word", SHARE_MEDIA.SINA); //shareWeb(this, "", "Hello Word", "Word", SHARE_MEDIA.WEIXIN); //UMLoginUtils.umengDeleteOauth(LoginActivity.this,SHARE_MEDIA.WEIXIN); //UMLoginUtils.shareLoginUmeng(this, SHARE_MEDIA.WEIXIN);
9.回调
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); }
完成以上步骤,就成功的接入了友盟的第三方登入和分享了
当然有可能会遇到一些问题
这种出现的原因是,导包时缺少了文件,解决方法就是去下载的包中,找到相对应的文件,复制到对应的目录下