Android 第三方登录、分享(ShareSDK、友盟)

Android 第三方登录、分享(ShareSDK、友盟),第1张

概述为下边的项目做准备,写一个第三方登录分享的demo。分别使用sharesdk和友盟来实现。

为下边的项目做准备,写一个第三方登录、分享的demo。分别使用sharesdk和友盟来实现。

先说一下我对两者的使用上的感觉,个人感觉sharesdk比友盟更好一点,好在哪里呢?好在人工服务上。在集成的过程中遇到了各种问题,但是sharesdk的人工服务做的很好,能给答疑解惑,提供解决问题的方法!
接下来上代码(本文使用androID studio开发,sharesdk版本v2.7.7,友盟版本v6.0.0):

一、使用sharesdk(sharesdk版本v2.7.7)来集成:

1、要去官网:http://www.mob.com/  注册账号、添加应用、下载sdk、分别去新浪、微信、QQ开放平台注册应用,拿到key。准备好这些,就让咱们开始吧!
2、在清单文件中添加如下权限:

<uses-permission androID:name="androID.permission.GET_TASKS" /> <uses-permission androID:name="androID.permission.INTERNET" /> <uses-permission androID:name="androID.permission.ACCESS_WIFI_STATE" /> <uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE" /> <uses-permission androID:name="androID.permission.CHANGE_WIFI_STATE" /> <uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission androID:name="androID.permission.READ_PHONE_STATE" /> <uses-permission androID:name="androID.permission.MANAGE_ACCOUNTS"/> <uses-permission androID:name="androID.permission.GET_ACCOUNTS"/> <!-- 蓝牙分享所需的权限 --> <uses-permission androID:name="androID.permission.BLUetoOTH" /> <uses-permission androID:name="androID.permission.BLUetoOTH_admin" />

3、继续添加Activity的信息,**此处注意tencent后面的appID要保持和您配置的QQ的appID一致**:

 <!-- 调用QQ,需要注册的回调activity --><activity androID:name="com.mob.tools.MobUIShell" androID:theme="@androID:style/theme.Translucent.NoTitlebar" androID:configChanges="keyboardHIDden|orIEntation|screenSize" androID:screenorIEntation="portrait" androID:windowsoftinputMode="stateHIDden|adjustResize" >   <intent-filter>     <data androID:scheme="tencent100371282" />     <action androID:name="androID.intent.action.VIEW" />     <category androID:name="androID.intent.category.broWSABLE" />     <category androID:name="androID.intent.category.DEFAulT" />   </intent-filter>  <!-- 调用新浪原生SDK,需要注册的回调activity -->  <intent-filter>    <action androID:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />    <category androID:name="androID.intent.category.DEFAulT" />  </intent-filter> </activity><!-- 调用微信,需要注册的回调activity --><!--微信分享回调 --> <activity androID:name=".wxAPI.WXEntryActivity" androID:theme="@androID:style/theme.Translucent.NoTitlebar" androID:configChanges="keyboardHIDden|orIEntation|screenSize" androID:exported="true" androID:screenorIEntation="portrait" />

4、去assets目录下的ShareSdk.xml目录下修改准备好的QQ、微信、微博的key。
在此处注意:4.1、assets文件夹在main的根目录下。
          4.2、QQ和QZone使用的同一个AppID、AppKey
          4.3、微信和朋友圈、收藏使用同一个 AppID、AppSecret
          4.4、微博除去配置AppKey、AppSecret之外,还需要配置
    RedirectUrl="http://sns.whalecloud.com/sina2/callback"
    RedirectUrl的值和微博应用信息处的授权回调页保持一致

5、去添加微信的回调
    5.1、在包名的下边建立一个名字为“wxAPI”的包
    5.2、把demo中的“WXEntryActivity”放进去,注意,这个类不需要动,不需要手动调用!!
    ![WXEntryActivity的位置](http://img.blog.csdn.net/20161015153103561)

6、去写代码吧
    提前准备PublicStaticdata.java:

package com.example.lql.sharesdk.utils;import com.umeng.socialize.UMShareAPI;import cn.sharesdk.framework.ShareSDK;public class PublicStaticdata {  public static ShareSDK myShareSDK;  public static UMShareAPI mShareAPI;}

    6.0初始化
        PublicStaticdata.myShareSDK= new ShareSDK();
        PublicStaticdata.myShareSDK.initSDK(getApplicationContext());
    6.1、打开分享面板

/** * @param Title 标题 * @param text 内容 * @param picurl 图片链接 * * QQ和QQ空间设置分享链接使用setTitleUrl(); * 设置标题:setTitle * 设置内容:setText * 设置网络图片:oks.setimageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg"); * 设置本地图片: //oks.setimagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片 * * 微信 * url仅在微信(包括好友和朋友圈)中使用 * oks.setUrl("http://qq.com"); */  private voID showShare(String Title,String text,String picurl) {    OnekeyShare oks = new OnekeyShare();    //关闭sso授权    oks.disableSSOWhenAuthorize();    oks.setTitle(Title);    oks.setText(text);    if(picurl!=null){      oks.setimageUrl(picurl);    }    // 启动分享GUI    oks.show(this);  }

    6.2、分享到指定平台(此处使用微信和微博为例)

 /** * 微信 在微信分享中,需要设置setShareType属性,此处应注意 * @param Title * @param content * @param PicUrl * @param TitleUrl * platform.shARE_TEXT(分享文本), platform.shARE_IMAGE(分享图片), platform.shARE_WEBPAGE(分享网页,既图文分享), platform.shARE_MUSIC(分享音频), platform.shARE_VIDEO(分享视频), platform.shARE_APPS(分享应用,仅微信支持), platform.shARE_file(分享文件,仅微信支持) platform.shARE_EMOJI(分享表情,仅微信支持) */  public static voID shareWX(String Title,String content,String PicUrl,String TitleUrl){    type="share";    Wechat.ShareParams sp=new Wechat.ShareParams();    sp.setTitle(Title);    sp.setText(content);    if(TitleUrl!=null){      sp.setTitleUrl(TitleUrl); // 标题的超链接    }    if(PicUrl!=null){      sp.setimageUrl(PicUrl);// 图片地址    }    sp.setShareType(platform.shARE_IMAGE);    sp.setUrl("http://qq.com");    Platform wx = PublicStaticdata.myShareSDK.getPlatform (Wechat.name);    wx. setPlatformActionListener (mPlatformActionListener); // 设置分享事件回调    // 执行图文分享    wx.share(sp);  }
  /** * 分享到微博 * @param text 文本内容 * @param picUrl 网络图片 (文档中说明分享图片需要审核通过,测试中体现不需要) */  public static voID shareSina(String text,String picUrl){    type="share";    SinaWeibo.ShareParams sp = new SinaWeibo.ShareParams();    sp.setText(text);    if(picUrl!=null){      sp.setimageUrl(picUrl);    }    Platform weibo = PublicStaticdata.myShareSDK.getPlatform(SinaWeibo.name);    weibo.setPlatformActionListener(mPlatformActionListener); // 设置分享事件回调// 执行图文分享    weibo.share(sp);  }

    6.3第三方登录

  /** * 登录 * @param name 登录方式(QQ.name、Wechat.name、SinaWeibo.name) */  public static voID Login(String name){    type="login";    Platform mPlatform = ShareSDK.getPlatform(name);    mPlatform.setPlatformActionListener(mPlatformActionListener);    mPlatform.authorize();//单独授权,OnComplete返回的hashmap是空的    mplatform.showUser(null);//授权并获取用户信息  }

    6.4登录和分享回调(此处分享和登录使用的一个监听)

  public static PlatformActionListener mPlatformActionListener= new PlatformActionListener() {    @OverrIDe    public voID onComplete(Platform platform,int i,HashMap<String,Object> hashMap) {      if(type.equals("login")){        Log.e("onComplete","登录成功");        Log.e("openID",platform.getDb().getUserID());//拿到登录后的openID        Log.e("username",platform.getDb().getUsername());//拿到登录用户的昵称      }else{        Log.e("onComplete","分享成功");      }    }    @OverrIDe    public voID onError(Platform platform,Throwable throwable) {      Log.e("onError",throwable.toString()+"");      if(type.equals("login")){        Log.e("onError","登录失败"+throwable.toString());      }else{        Log.e("onError","分享失败"+throwable.toString());      }    }    @OverrIDe    public voID onCancel(Platform platform,int i) {      if(type.equals("login")){        Log.e("onCancel","登录取消");      }else{        Log.e("onCancel","分享取消");      }    }  };

7、至此使用ShareSDK集成常见分三种登录分享方式就完成了,整个过程没有遇到严重的问题,整体体验效果还不错。上整体代码ShareSDKUtils.java:

package com.example.lql.sharesdk.utils;import androID.content.Context;import androID.util.Log;import java.util.HashMap;import cn.sharesdk.framework.Platform;import cn.sharesdk.framework.PlatformActionListener;import cn.sharesdk.framework.ShareSDK;import cn.sharesdk.sina.weibo.SinaWeibo;import cn.sharesdk.tencent.qq.QQ;import cn.sharesdk.tencent.qzone.QZone;import cn.sharesdk.wechat.favorite.WechatFavorite;import cn.sharesdk.wechat.frIEnds.Wechat;import cn.sharesdk.wechat.moments.WechatMoments;/** * Created by LQL on 2016/10/14. */public class ShareSDKUtils {private static String type="";  /** * 分享到微博 * @param text 文本内容 * @param picUrl 网络图片 (通过审核后才能添加) */  public static voID shareSina(String text,String picUrl,Context context){    type="share";    SinaWeibo.ShareParams sp = new SinaWeibo.ShareParams();    sp.setText(text);    if(picUrl!=null){      sp.setimageUrl(picUrl);    }    Platform weibo = PublicStaticdata.myShareSDK.getPlatform(SinaWeibo.name);    weibo.setPlatformActionListener(mPlatformActionListener); // 设置分享事件回调// 执行图文分享    weibo.share(sp);  }  /** * 分享到QQ空间 * @param Title 标题 * @param content 内容 * @param PicUrl 图片 * @param TitleUrl Title链接 */  public static voID shareQzone(String Title,String TitleUrl){    type="share";    QZone.ShareParams sp = new QZone.ShareParams();    sp.setTitle(Title);    sp.setText(content);    if(TitleUrl!=null){      sp.setTitleUrl(TitleUrl); // 标题的超链接    }    if(PicUrl!=null){      sp.setimageUrl(PicUrl);    }    Platform qzone = PublicStaticdata.myShareSDK.getPlatform (QZone.name);    qzone. setPlatformActionListener (mPlatformActionListener); // 设置分享事件回调    // 执行图文分享    qzone.share(sp);  }  /** * QQ * @param Title * @param content * @param PicUrl * @param TitleUrl */  public static voID shareQQ(String Title,String TitleUrl){    type="share";    QQ.ShareParams sp=new  QQ.ShareParams();    sp.setTitle(Title);    sp.setText(content);    if(TitleUrl!=null){      sp.setTitleUrl(TitleUrl); // 标题的超链接    }    if(PicUrl!=null){      sp.setimageUrl(PicUrl);    }    Platform qq = PublicStaticdata.myShareSDK.getPlatform (QQ.name);    qq. setPlatformActionListener (mPlatformActionListener); // 设置分享事件回调    // 执行图文分享    qq.share(sp);  }  /** * 收藏 * @param Title * @param content * @param PicUrl * @param TitleUrl */  public static voID shareWXF(String Title,String TitleUrl){    type="share";    WechatFavorite.ShareParams sp=new WechatFavorite.ShareParams();    sp.setTitle(Title);    sp.setText(content);    if(TitleUrl!=null){      sp.setTitleUrl(TitleUrl); // 标题的超链接    }    if(PicUrl!=null){      sp.setimageUrl(PicUrl);    }    sp.setShareType(platform.shARE_IMAGE);    sp.setUrl("http://www.163.com/");    Platform qq = PublicStaticdata.myShareSDK.getPlatform (WechatFavorite.name);    qq. setPlatformActionListener (mPlatformActionListener); // 设置分享事件回调    // 执行图文分享    qq.share(sp);  }  /** * 朋友圈 * @param Title * @param content * @param PicUrl * @param TitleUrl */  public static voID shareWXM(String Title,String TitleUrl){    type="share";    WechatMoments.ShareParams sp=new WechatMoments.ShareParams();    sp.setTitle(Title);    sp.setText(content);    if(TitleUrl!=null){      sp.setTitleUrl(TitleUrl); // 标题的超链接    }    if(PicUrl!=null){      sp.setimageUrl(PicUrl);    }    sp.setShareType(platform.shARE_IMAGE);    sp.setUrl("http://www.sina.com.cn");    Platform qq = PublicStaticdata.myShareSDK.getPlatform (WechatMoments.name);    qq. setPlatformActionListener (mPlatformActionListener); // 设置分享事件回调    // 执行图文分享    qq.share(sp);  }  /** * 微信 * @param Title * @param content * @param PicUrl * @param TitleUrl * platform.shARE_TEXT(分享文本), platform.shARE_IMAGE(分享图片), platform.shARE_WEBPAGE(分享网页,既图文分享), platform.shARE_MUSIC(分享音频), platform.shARE_VIDEO(分享视频), platform.shARE_APPS(分享应用,仅微信支持), platform.shARE_file(分享文件,仅微信支持) platform.shARE_EMOJI(分享表情,仅微信支持) */  public static voID shareWX(String Title,String TitleUrl){    type="share";    Wechat.ShareParams sp=new Wechat.ShareParams();    sp.setTitle(Title);    sp.setText(content);    if(TitleUrl!=null){      sp.setTitleUrl(TitleUrl); // 标题的超链接    }    if(PicUrl!=null){      sp.setimageUrl(PicUrl);    }    sp.setShareType(platform.shARE_IMAGE);    sp.setUrl("http://qq.com");    Platform wx = PublicStaticdata.myShareSDK.getPlatform (Wechat.name);    wx. setPlatformActionListener (mPlatformActionListener); // 设置分享事件回调    // 执行图文分享    wx.share(sp);  }  /** * 登录 */  public static voID Login(String name){    type="login";    Platform mPlatform = ShareSDK.getPlatform(name);    mPlatform.setPlatformActionListener(mPlatformActionListener);    mPlatform.authorize();//单独授权,OnComplete返回的hashmap是空的    mplatform.showUser(null);//授权并获取用户信息  }  public static PlatformActionListener mPlatformActionListener= new PlatformActionListener() {    @OverrIDe    public voID onComplete(Platform platform,"分享取消");      }    }  };}

在Activity中的使用

String picurl="http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg"; case R.ID.openShare://打开分享面板,直接调用上边写到的方法        showShare("sharesdk测试","sharesdk测试",picurl);        break;      case R.ID.QQLogin://QQ登录        ShareSDKUtils.Login(QQ.name);        break;      case R.ID.WXLogin://微信登录        ShareSDKUtils.Login(Wechat.name);        break;      case R.ID.SinaLogin://微博登录        ShareSDKUtils.Login(SinaWeibo.name);        break;      case R.ID.WXlike://收藏分享(微信需要有图片)        ShareSDKUtils.shareWXF("微信收藏分享测试标题sharesdk","微信收藏分享测试内容sharesdk",picurl,null);        break;      case R.ID.WXfrIEndsshare://朋友圈分享(微信需要有图片)        ShareSDKUtils.shareWXM("朋友圈分享测试标题sharesdk","朋友圈分享测试内容sharesdk",null);        break;      case R.ID.WXshare://微信分享(微信需要有图片)        ShareSDKUtils.shareWX("微信分享测试标题sharesdk","微信分享测试内容sharesdk",null);        break;      case R.ID.Sinashare://微博分享        ShareSDKUtils.shareSina("Sina分享测试sharesdk",null,MainActivity.this);        break;      case R.ID.QZOneshare://空间        ShareSDKUtils.shareQzone("Qzone分享测试标题sharesdk","Qzone分享测试内容sharesdk",null);        break;      case R.ID.QQshare://QQ        ShareSDKUtils.shareQQ("Qzone分享测试标题sharesdk",null);        break;

二、使用友盟来集成(友盟版本v6.0.0(精简版)):

1、此处省略注册、下载sdk、准备key的过程,直接从集成开始。
2、权限:

<uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE" /><uses-permission androID:name="androID.permission.ACCESS_WIFI_STATE" /><uses-permission androID:name="androID.permission.READ_PHONE_STATE" /><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission androID:name="androID.permission.READ_EXTERNAL_STORAGE" /><uses-permission androID:name="androID.permission.INTERNET" /><uses-permission androID:name="androID.permission.READ_LOGS" /><uses-permission androID:name="androID.permission.CALL_PHONE" /><uses-permission androID:name="androID.permission.ACCESS_FINE_LOCATION" /><uses-permission androID:name="androID.permission.ACCESS_COARSE_LOCATION" /><uses-permission androID:name="androID.permission.GET_TASKS" /><uses-permission androID:name="androID.permission.SET_DEBUG_APP" /><uses-permission androID:name="androID.permission.SYstem_ALERT_WINDOW" /><uses-permission androID:name="androID.permission.GET_ACCOUNTS" /><uses-permission androID:name="androID.permission.USE_CREDENTIALS" /><uses-permission androID:name="androID.permission.MANAGE_ACCOUNTS" />

3、添加Activity信息(此处使用微博精简版,新浪微博不需要回调Activity)**此处注意tencent后面的appID要保持和您配置的QQ的appID一致**:
 

<!-- ###################添加UmengAppkey###################### -->    <Meta-data androID:name="UMENG_APPKEY" androID:value="577c404367e58e6b1f001a40">    </Meta-data><!-- 调用微信,需要注册的回调activity --><activity androID:name=".wxAPI.WXEntryActivity" androID:configChanges="keyboardHIDden|orIEntation|screenSize" androID:exported="true" androID:screenorIEntation="portrait" androID:theme="@androID:style/theme.Translucent.NoTitlebar" /><!-- 调用QQ --><activity androID:name="com.tencent.tauth.AuthActivity" androID:launchMode="singleTask" androID:noHistory="true" >    <intent-filter>      <action androID:name="androID.intent.action.VIEW" />      <category androID:name="androID.intent.category.DEFAulT" />      <category androID:name="androID.intent.category.broWSABLE" />      <data androID:scheme="tencent100424468" />    </intent-filter>  </activity>  <activity androID:name="com.tencent.connect.common.AssistActivity" androID:screenorIEntation="portrait" androID:theme="@androID:style/theme.Translucent.NoTitlebar" androID:configChanges="orIEntation|keyboardHIDden|screenSize"/>

4、上代码:

4.0初始化:

    PlatformConfig.setWeixin("wx282305cc871b77bc","bdf0b6e3ff283ec29a12abf40ff62c1a");    PlatformConfig.setSinaWeibo("170221996","75314930606f946864ee0d7aeecc46ed");    Config.REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback";//您新浪后台的回调地址    PlatformConfig.setQQZone("1105747496","EVHTBI0P5NDpuNIZ");    UMShareAPI.get(this);

4.1打开分享面板

 new ShareAction(MainActivity.this).withText("测试啊测试啊")            .withTitle("测试啊测试啊")            .withMedia(new UMImage(MainActivity.this,picurl))           .setdisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN,SHARE_MEDIA.QZONE,SHARE_MEDIA.WEIXIN_CIRCLE,SHARE_MEDIA.WEIXIN_FAVORITE)            .setCallback(umShareListener).open();

4.2分享到置顶平台

  /** * 分享 * @param mActivity * @param Title 标题 * @param context 内容 * @param Sharetype 分享方式 * SHARE_MEDIA.WEIXIN_FAVORITE * SHARE_MEDIA.WEIXIN_CIRCLE * SHARE_MEDIA.WEIXIN * SHARE_MEDIA.SINA * SHARE_MEDIA.QZONE * SHARE_MEDIA.QQ * @param picurl 图片地址 */  public static voID SharePic(Activity mActivity,String Title,String context,SHARE_MEDIA Sharetype,String picurl){    UmengShare.myActivity=mActivity;    if(picurl!=null){      new ShareAction(mActivity).setPlatform(Sharetype)          .withText(context)          .withTitle(Title)          .withMedia(new UMImage(mActivity,picurl))          .setCallback(umShareListener)          .share();    }else{      new ShareAction(mActivity).setPlatform(Sharetype)          .withText(context)          .withTitle(Title)          .setCallback(umShareListener)          .share();    }  }

4.3分享监听回调

 /** * 分享监听 */  public static UMShareListener umShareListener = new UMShareListener() {    @OverrIDe    public voID onResult(SHARE_MEDIA platform) {      Log.d("plat","platform"+platform);      Toast.makeText(myActivity,platform + " 分享成功啦",Toast.LENGTH_SHORT).show();    }    @OverrIDe    public voID onError(SHARE_MEDIA platform,Throwable t) {      Toast.makeText(myActivity,platform + " 分享失败啦",Toast.LENGTH_SHORT).show();      if(t!=null){        Log.d("throw","throw:"+t.getMessage());      }    }    @OverrIDe    public voID onCancel(SHARE_MEDIA platform) {      Toast.makeText(myActivity,platform + " 分享取消了",Toast.LENGTH_SHORT).show();    }  };

4.4 登录

  /** * 第三方登录 * @param mActivity * @param type 登录方式 * SHARE_MEDIA.QQ * SHARE_MEDIA.WEIXIN * SHARE_MEDIA.SINA */  public static voID UmengLogin(Activity mActivity,SHARE_MEDIA type){    UmengShare.myActivity=mActivity;    PublicStaticdata.mShareAPI = UMShareAPI.get( mActivity );    PublicStaticdata.mShareAPI.doOauthVerify(mActivity,type,umAuthListener);  }

 4.5 登录回调

  /** * 第三方登录监听 */  public static UMAuthListener umAuthListener = new UMAuthListener() {    @OverrIDe    public voID onComplete(SHARE_MEDIA platform,int action,Map<String,String> data) {      Toast.makeText(myActivity,"授权成功",Toast.LENGTH_SHORT).show();      Log.e("data",data.toString());    }    @OverrIDe    public voID onError(SHARE_MEDIA platform,Throwable t) {      Toast.makeText( myActivity,"授权失败",t.toString()+"");    }    @OverrIDe    public voID onCancel(SHARE_MEDIA platform,int action) {      Toast.makeText( myActivity,"关闭授权","关闭授权");    }  };

5.在一些低端手机上可能会出现QQ没有回调的情况,需要在Activity中添加如下代码:

  /** * 友盟QQ登录需要的回调 在有些低端手机上登录之后不走回调,需要这个方法 * @param requestCode * @param resultCode * @param data */  @OverrIDe  protected voID onActivityResult(int requestCode,int resultCode,Intent data) {    super.onActivityResult(requestCode,resultCode,data);    UMShareAPI.get(this).HandleQQError(MainActivity.this,requestCode,umAuthListener);    PublicStaticdata.mShareAPI.onActivityResult(requestCode,data);  }

6、同样是没有回调,这次是微信,需要在WXEntryActivity中加入代码:

  @OverrIDe  protected voID handleIntent(Intent intent){    mWxHandler.setAuthListener(new UMAuthListener() {      @OverrIDe      public voID onComplete(SHARE_MEDIA platform,String> data) {        Log.e("UMWXHandler fsdfsdfs"+data.toString());      }      @OverrIDe      public voID onError(SHARE_MEDIA platform,Throwable t) {        Log.e("UMWXHandler fsdfsdfs",t.toString());      }      @OverrIDe      public voID onCancel(SHARE_MEDIA platform,int action) {        Log.e("UMWXHandler fsdfsdfs","onCancel");      }    });    super.handleIntent(intent);  }

7、至此使用友盟集成常见分三种登录分享方式就完成了。上整体代码UmengShare.java:

package com.example.lql.sharesdk.utils;import androID.Manifest;import androID.app.Activity;import androID.os.Build;import androID.support.v4.app.ActivityCompat;import androID.util.Log;import androID.Widget.Toast;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 java.util.Map;/** * Created by LQL on 2016/10/15. */public class UmengShare {  private static Activity myActivity;  /** * 分享 * @param mActivity * @param Title 标题 * @param context 内容 * @param Sharetype 分享方式 * SHARE_MEDIA.WEIXIN_FAVORITE * SHARE_MEDIA.WEIXIN_CIRCLE * SHARE_MEDIA.WEIXIN * SHARE_MEDIA.SINA * SHARE_MEDIA.QZONE * SHARE_MEDIA.QQ * @param picurl 图片地址 */  public static voID SharePic(Activity mActivity,picurl))          .setCallback(umShareListener)          .share();    }else{      new ShareAction(mActivity).setPlatform(Sharetype)          .withText(context)          .withTitle(Title)          .setCallback(umShareListener)          .share();    }  }  /** * 第三方登录 * @param mActivity * @param type 登录方式 * SHARE_MEDIA.QQ * SHARE_MEDIA.WEIXIN * SHARE_MEDIA.SINA */  public static voID UmengLogin(Activity mActivity,umAuthListener);  }  /** * 第三方登录监听 */  public static UMAuthListener umAuthListener = new UMAuthListener() {    @OverrIDe    public voID onComplete(SHARE_MEDIA platform,"关闭授权");    }  };  /** * 分享监听 */  public static UMShareListener umShareListener = new UMShareListener() {    @OverrIDe    public voID onResult(SHARE_MEDIA platform) {      Log.d("plat",Toast.LENGTH_SHORT).show();    }  };}

在Activity中使用:

 case R.ID.openShareUmeng://分享面板        new ShareAction(MainActivity.this).withText("测试啊测试啊")            .withTitle("测试啊测试啊")            .withMedia(new UMImage(MainActivity.this,picurl))            .setdisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.WEIXIN_FAVORITE)            .setCallback(umShareListener).open();        break;      case R.ID.QQLoginUmeng://QQ登录        UmengShare.UmengLogin(MainActivity.this,SHARE_MEDIA.QQ);        break;      case R.ID.WXLoginUmeng://微信登录        UmengShare.UmengLogin(MainActivity.this,SHARE_MEDIA.WEIXIN);        break;      case R.ID.SinaLoginUmeng://微博登录        UmengShare.UmengLogin(MainActivity.this,SHARE_MEDIA.SINA);        break;      case R.ID.WXlikeUmeng://收藏分享(微信需要有图片)        UmengShare.SharePic(MainActivity.this,"测试收藏","测试收藏内容",SHARE_MEDIA.WEIXIN_FAVORITE,picurl);        break;      case R.ID.WXfrIEndsshareUmeng://朋友圈分享(微信需要有图片)        UmengShare.SharePic(MainActivity.this,"测试朋友圈","测试朋友圈内容",picurl);        break;      case R.ID.WXshareUmeng://微信分享(微信需要有图片)        UmengShare.SharePic(MainActivity.this,"测试分享","测试分享内容",picurl);        break;      case R.ID.SinashareUmeng://微博分享        UmengShare.SharePic(MainActivity.this,"测试微博","测试微博内容",SHARE_MEDIA.SINA,null);        break;      case R.ID.QZOneshareUmeng://空间        UmengShare.SharePic(MainActivity.this,"测试空间","测试空间内容",null);        break;      case R.ID.QQshareUmeng://QQ        UmengShare.SharePic(MainActivity.this,"测试QQ","测试QQ内容",null);        break;

最后,两种方式都集成好了,小伙伴们赶紧去使用吧。本人能力有效,如果BUG纯属正常!建议使用ShareSDK!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android 第三方登录、分享(ShareSDK、友盟)全部内容,希望文章能够帮你解决Android 第三方登录、分享(ShareSDK、友盟)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1148001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存