首先根据官网配置jar包,以及mainfest文件
在自己项目的application初始化oncreat的方法里面,初始化shareapi
UMShareAPI.get(this);在初始化以后,配置要分享和第三方登录的账号
//设置分享的信息 //微信 wx12342956d1cab4f9,a5ae111de7d9ea137e88a5e02c07c94d PlatformConfig.setWeixin("appkey_id", "secret"); //新浪微博 PlatformConfig.setSinaWeibo("1570773528 ", "d7c850c34350c41c444c7a2cd9578a42"); /*最新的版本需要加上这个回调地址,可以在微博开放平台申请的应用获取,必须要有*/ Config.REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback"; //QQ PlatformConfig.setQQZone("appid", "appkey");
切记微信回调的activity要放在报名下的wxapi的一个包下面
第三方登录的时候,需要用到Shareapi的方法
UMShareAPI.get(this).getPlatformInfo(LoginActivity.this, SHARE_MEDIA.WEIXIN, umAuthListener);
UmActhListener 就是登录以后返回值接受的的监听
UMAuthListener umAuthListener = new UMAuthListener() { @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { //这里是登录成功以后,返回的第三方用户的信息 // openid = data.get("openid");//第三方登录用户的唯一标识,可以用来注册app的账号 screen_name = data.get("screen_name");//用户的用户名 image_url = data.get("profile_image_url");//用户的头像 } @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText(LoginActivity.this, "登录失败", Toast.LENGTH_SHORT).show(); } @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText(LoginActivity.this, "用户取消", Toast.LENGTH_SHORT).show(); } };
第三方分享的时候,需要用到Defaultcontent
public class Defaultcontent { private Context context; public Defaultcontent(Context context) { this.context = context; } public UMShareListener getUmShareListener() { return umShareListener; } public UMAuthListener getUmAuthListener() { return umAuthListener; } public static String url = "https://wsq.umeng.com/"; public static String text = "分享的内容"; public static String title = "乌托派分享的标题"; public static String imageurl = "分享显示的图片"; public static String videourl = "http://video.sina.com.cn/p/sports/cba/v/2013-10-22/144463050817.html"; public static String musicurl = "http://music.huoxing.com/upload/20130330/1364651263157_1085.mp3"; //分享的监听 private UMShareListener umShareListener = new UMShareListener() { @Override public void onResult(SHARE_MEDIA platform) { com.umeng.socialize.utils.Log.d("plat","platform"+platform); if(platform.name().equals("WEIXIN_FAVORITE")){ Toast.makeText(context,platform + " 收藏成功啦",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(context, platform + " 分享成功啦", Toast.LENGTH_SHORT).show(); } } @Override public void onError(SHARE_MEDIA platform, Throwable t) { Toast.makeText(context,platform + " 分享失败啦", Toast.LENGTH_SHORT).show(); if(t!=null){ com.umeng.socialize.utils.Log.d("throw","throw:"+t.getMessage()); } } @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(context,platform + " 分享取消了", Toast.LENGTH_SHORT).show(); } };}把这个类粘贴到自己的项目当中,当需要用到分享的时候,直接调用方法
new ShareAction(LoginActivity.this).setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE) .withTitle(Defaultcontent.title) .withText(Defaultcontent.text + "——分享的内容") .withMedia(new UMImage(LoginActivity.this, Defaultcontent.imageurl)) .withTargetUrl("分享出去的H5页面") .setCallback(defaultcontent.getUmShareListener()) .share();最后,1.如果第三方登录的时候,登录QQ提示不是安装的应用不是最新的应用,则需要把腾讯应用平台的apk用打包以后得apk重新上传就可以了。
2.微信第三方登录,分享,支付的时候,需要用的签名文件,必须是打包以后生成的签名文件,如果刚开始是用未打包以后得签名,测试的时候,可以实现功能,打包以后无法使用功能,则需要把微信客户端卸载以后重新安装,再把微信开发平台的签名替换成打包以后得签名,微信打包签名可以用专门的一个app可以获得GenSignature的一个apk。