Android 第三方登錄屈扎、分享(ShareSDK埃唯、友盟)

為下邊的項(xiàng)目做準(zhǔn)備,寫一個(gè)第三方登錄鹰晨、分享的demo墨叛。分別使用sharesdk和友盟來實(shí)現(xiàn)止毕。

先說一下我對兩者的使用上的感覺,個(gè)人感覺sharesdk比友盟更好一點(diǎn)漠趁,好在哪里呢扁凛?好在人工服務(wù)上。在集成的過程中遇到了各種問題闯传,但是sharesdk的人工服務(wù)做的很好谨朝,能給答疑解惑,提供解決問題的方法甥绿!

接下來上代碼(本文使用android studio開發(fā)字币,sharesdk版本v2.7.7,友盟版本v6.0.0):
一共缕、使用sharesdk(sharesdk版本v2.7.7)來集成:

1洗出、要去官網(wǎng):http://www.mob.com/ 注冊賬號(hào)、添加應(yīng)用图谷、下載sdk翩活、分別去新浪、微信蜓萄、QQ開放平臺(tái)注冊應(yīng)用隅茎,拿到key。準(zhǔn)備好這些嫉沽,就讓咱們開始吧辟犀!
2、在清單文件中添加如下權(quán)限:

<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"/> 
<!-- 藍(lán)牙分享所需的權(quán)限 --> 
<uses-permission android:name="android.permission.BLUETOOTH" /> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

3绸硕、繼續(xù)添加Activity的信息堂竟,此處注意tencent后面的appid要保持和您配置的QQ的appid一致

 <!-- 調(diào)用QQ,需要注冊的回調(diào)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> 
<!-- 調(diào)用新浪原生SDK玻佩,需要注冊的回調(diào)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>
<!-- 調(diào)用微信出嘹,需要注冊的回調(diào)activity -->
<!--微信分享回調(diào) --> 
<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目錄下修改準(zhǔn)備好的QQ咬崔、微信税稼、微博的key。 在此處注意:
4.1垮斯、assets文件夾在main的根目錄下郎仆。
4.2、QQ和QZone使用的同一個(gè)AppId兜蠕、AppKey
4.3扰肌、微信和朋友圈、收藏使用同一個(gè) AppId熊杨、AppSecret
4.4曙旭、微博除去配置AppKey盗舰、AppSecret之外,還需要配置 RedirectUrl="http://sns.whalecloud.com/sina2/callback" RedirectUrl的值和微博應(yīng)用信息處的授權(quán)回調(diào)頁保持一致
5桂躏、去添加微信的回調(diào)
5.1钻趋、在包名的下邊建立一個(gè)名字為“wxapi”的包
5.2、把demo中的“WXEntryActivity”放進(jìn)去沼头,注意爷绘,這個(gè)類不需要?jiǎng)樱恍枰謩?dòng)調(diào)用=丁土至!

WXEntryActivity的位置

6、去寫代碼吧
提前準(zhǔn)備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 標(biāo)題
 * @param text 內(nèi)容
 * @param picurl 圖片鏈接 *
 * QQ和QQ空間設(shè)置分享鏈接使用setTitleUrl(); 
* 設(shè)置標(biāo)題:setTitle 
* 設(shè)置內(nèi)容:setText 
* 設(shè)置網(wǎng)絡(luò)圖片:oks.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg"); 
* 設(shè)置本地圖片: //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(); //關(guān)閉sso授權(quán) 
      oks.disableSSOWhenAuthorize(); 
      oks.setTitle(title);
      oks.setText(text);
      if(picurl!=null){
           oks.setImageUrl(picurl);
     } 
      // 啟動(dòng)分享
      GUI oks.show(this); 
}

6.2陶因、分享到指定平臺(tái)(此處使用微信和微博為例)

 /** * 微信 在微信分享中,需要設(shè)置setShareType屬性垂蜗,此處應(yīng)注意 
* @param title 
* @param content 
* @param PicUrl 
* @param titleUrl 
* Platform.SHARE_TEXT(分享文本)楷扬, 
Platform.SHARE_IMAGE(分享圖片), 
Platform.SHARE_WEBPAGE(分享網(wǎng)頁贴见,既圖文分享)烘苹, 
Platform.SHARE_MUSIC(分享音頻),
 Platform.SHARE_VIDEO(分享視頻)片部, 
Platform.SHARE_APPS(分享應(yīng)用镣衡,僅微信支持),
 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); // 標(biāo)題的超鏈接 
          } 
        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); // 設(shè)置分享事件回調(diào) 
        // 執(zhí)行圖文分享 
        wx.share(sp); 
}
 /** * 分享到微博 
* @param text 文本內(nèi)容
 * @param picUrl 網(wǎng)絡(luò)圖片 (文檔中說明分享圖片需要審核通過,測試中體現(xiàn)不需要)
 */ 
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); // 設(shè)置分享事件回調(diào)
         // 執(zhí)行圖文分享
          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();//單獨(dú)授權(quán),OnComplete返回的hashmap是空的 
         mPlatform.showUser(null);//授權(quán)并獲取用戶信息 
}

6.4登錄和分享回調(diào)(此處分享和登錄使用的一個(gè)監(jiān)聽)

 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, int i, 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集成常見分三種登錄分享方式就完成了缘回,整個(gè)過程沒有遇到嚴(yán)重的問題吆视,整體體驗(yàn)效果還不錯(cuò)。上整體代碼ShareSDKUtils.java:

package com.example.lql.sharesdk.utils;

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;

/**
 * 作者:dell or Xiaomi Li
 * 時(shí)間: 2018/1/25
 * 內(nèi)容:把回調(diào)放在activity里邊酥宴,就能直接拿到結(jié)果過處理了
 * 最后修改:
 */
public class ShareSDKUtils {
    public static int SHARETYPE = 0X1;
    public static int LOGINTYPE = 0X2;

    /**
     * 分享到微博
     *
     * @param text   文本內(nèi)容
     * @param picUrl 網(wǎng)絡(luò)圖片 (通過審核后才能添加)
     */
    public static void shareSina(String text, String picUrl, PlatformActionListener mPlatformActionListener) {
        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); // 設(shè)置分享事件回調(diào)
//                 執(zhí)行圖文分享
        weibo.share(sp);
    }

    /**
     * 分享到QQ空間
     *
     * @param title    標(biāo)題
     * @param content  內(nèi)容
     * @param PicUrl   圖片
     * @param titleUrl title鏈接
     */
    public static void shareQzone(String title, String content, String PicUrl, String titleUrl, PlatformActionListener mPlatformActionListener) {
        QZone.ShareParams sp = new QZone.ShareParams();
        sp.setTitle(title);
        sp.setText(content);
        sp.setTitleUrl(titleUrl); // 標(biāo)題的超鏈接
        if (PicUrl != null) {
            sp.setImageUrl(PicUrl);
        }
        Platform qzone = PublicStaticData.myShareSDK.getPlatform(QZone.NAME);
        qzone.setPlatformActionListener(mPlatformActionListener); // 設(shè)置分享事件回調(diào)
        // 執(zhí)行圖文分享
        qzone.share(sp);
    }

    /**
     * QQ
     *
     * @param title
     * @param content
     * @param PicUrl
     * @param titleUrl
     */
    public static void shareQQ(String title, String content, String PicUrl, String titleUrl, PlatformActionListener mPlatformActionListener) {
        QQ.ShareParams sp = new QQ.ShareParams();
        sp.setTitle(title);
        sp.setText(content);
        sp.setTitleUrl(titleUrl); // 標(biāo)題的超鏈接
        if (PicUrl != null) {
            sp.setImageUrl(PicUrl);
        }
        Platform qq = PublicStaticData.myShareSDK.getPlatform(QQ.NAME);
        qq.setPlatformActionListener(mPlatformActionListener); // 設(shè)置分享事件回調(diào)
        // 執(zhí)行圖文分享
        qq.share(sp);
    }

    /**
     * 收藏
     *
     * @param title
     * @param content
     * @param PicUrl
     * @param titleUrl
     */
    public static void shareWXF(String title, String content, String PicUrl, String titleUrl, PlatformActionListener mPlatformActionListener) {
        WechatFavorite.ShareParams sp = new WechatFavorite.ShareParams();
        sp.setTitle(title);
        sp.setText(content);
        sp.setTitleUrl(titleUrl); // 標(biāo)題的超鏈接
        if (PicUrl != null) {
            sp.setImageUrl(PicUrl);
        }
        sp.setShareType(Platform.SHARE_IMAGE);
        sp.setUrl("http://www.163.com/");
        Platform wxf = PublicStaticData.myShareSDK.getPlatform(WechatFavorite.NAME);
        wxf.setPlatformActionListener(mPlatformActionListener); // 設(shè)置分享事件回調(diào)
        // 執(zhí)行圖文分享
        wxf.share(sp);
    }


    /**
     * 朋友圈
     *
     * @param title
     * @param content
     * @param PicUrl
     * @param titleUrl
     */
    public static void shareWXM(String title, String content, String PicUrl, String titleUrl, PlatformActionListener mPlatformActionListener) {
        WechatMoments.ShareParams sp = new WechatMoments.ShareParams();
        sp.setTitle(title);
        sp.setText(content);
        sp.setTitleUrl(titleUrl); // 標(biāo)題的超鏈接
        if (PicUrl != null) {
            sp.setImageUrl(PicUrl);
        }
        sp.setShareType(Platform.SHARE_IMAGE);
        sp.setUrl("http://www.sina.com.cn");
        Platform wxm = PublicStaticData.myShareSDK.getPlatform(WechatMoments.NAME);
        wxm.setPlatformActionListener(mPlatformActionListener); // 設(shè)置分享事件回調(diào)
        // 執(zhí)行圖文分享
        wxm.share(sp);
    }


    /**
     * 微信
     *
     * @param title
     * @param content
     * @param PicUrl
     * @param titleUrl Platform.SHARE_TEXT(分享文本)揩环,
     *                 Platform.SHARE_IMAGE(分享圖片),
     *                 Platform.SHARE_WEBPAGE(分享網(wǎng)頁幅虑,既圖文分享),
     *                 Platform.SHARE_MUSIC(分享音頻)顾犹,
     *                 Platform.SHARE_VIDEO(分享視頻)倒庵,
     *                 Platform.SHARE_APPS(分享應(yīng)用褒墨,僅微信支持),
     *                 Platform.SHARE_FILE(分享文件擎宝,僅微信支持)
     *                 Platform.SHARE_EMOJI(分享表情郁妈,僅微信支持)
     */
    public static void shareWX(String title, String content, String PicUrl, String titleUrl, PlatformActionListener mPlatformActionListener) {
        Wechat.ShareParams sp = new Wechat.ShareParams();
        sp.setTitle(title);
        sp.setText(content);
        sp.setTitleUrl(titleUrl); // 標(biāo)題的超鏈接
        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); // 設(shè)置分享事件回調(diào)
        // 執(zhí)行圖文分享
        wx.share(sp);
    }

    /**
     * 登錄
     */
    public static void Login(String name, PlatformActionListener mPlatformActionListener) {
        Platform mPlatform = ShareSDK.getPlatform(name);
        mPlatform.setPlatformActionListener(mPlatformActionListener);
        mPlatform.authorize();//單獨(dú)授權(quán),OnComplete返回的hashmap是空的
        mPlatform.showUser(null);//授權(quán)并獲取用戶信息
    }
}

在Activity中的使用

            String picurl="http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg"; 
            case R.id.openShare:
                showShare("sharesdk測試", "sharesdk測試", "http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");
                break;
            case R.id.QQLogin://QQ登錄
                SharesdkType = ShareSDKUtils.LOGINTYPE;
                ShareSDKUtils.Login(QQ.NAME, this);
                break;
            case R.id.WXLogin://微信登錄
                SharesdkType = ShareSDKUtils.LOGINTYPE;
                ShareSDKUtils.Login(Wechat.NAME, this);
                break;
            case R.id.SinaLogin://微博登錄
                SharesdkType = ShareSDKUtils.LOGINTYPE;
                ShareSDKUtils.Login(SinaWeibo.NAME, this);
                break;
            case R.id.WXLike://收藏分享(微信需要有圖片)
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareWXF("微信收藏分享測試標(biāo)題sharesdk", "微信收藏分享測試內(nèi)容sharesdk", picurl, "http://www.haidu.com", this);
                break;
            case R.id.WXfriendsshare://朋友圈分享(微信需要有圖片)
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareWXM("朋友圈分享測試標(biāo)題sharesdk", "朋友圈分享測試內(nèi)容sharesdk", picurl, "http://www.haidu.com", this);
                break;
            case R.id.WXshare://微信分享(微信需要有圖片)
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareWX("微信分享測試標(biāo)題sharesdk", "微信分享測試內(nèi)容sharesdk", picurl, "http://www.haidu.com", this);
                break;
            case R.id.Sinashare://微博分享
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareSina("Sina分享測試sharesdk", null, this);
                break;
            case R.id.QZONEshare://空間
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareQzone("Qzone分享測試標(biāo)題sharesdk", "Qzone分享測試內(nèi)容sharesdk", picurl, "http://www.haidu.com", this);
                break;
            case R.id.QQshare://QQ
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareQQ("Qzone分享測試標(biāo)題sharesdk", "Qzone分享測試內(nèi)容sharesdk", picurl, "http://www.haidu.com", this);
                break;

二、使用友盟來集成(友盟版本v6.0.0(精簡版)):
1绍申、此處省略注冊噩咪、下載sdk、準(zhǔn)備key的過程极阅,直接從集成開始胃碾。
2、權(quán)限:

<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信息(此處使用微博精簡版仆百,新浪微博不需要回調(diào)Activity)此處注意tencent后面的appid要保持和您配置的QQ的appid一致

 <!-- ###################添加UmengAppkey###################### --> 
<meta-data 
      android:name="UMENG_APPKEY" 
      android:value="577c404367e58e6b1f001a40">
 </meta-data>
<!-- 調(diào)用微信,需要注冊的回調(diào)activity -->
<activity 
      android:name=".wxapi.WXEntryActivity" 
      android:configChanges="keyboardHidden|orientation|screenSize" 
      android:exported="true" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" />

<!-- 調(diào)用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";//您新浪后臺(tái)的回調(diào)地址
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分享到指定平臺(tái)

   /**
     * 分享
     *
     * @param mActivity
     * @param title     標(biāo)題
     * @param context   內(nèi)容
     * @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, UMShareListener umShareListener) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CALL_PHONE, Manifest.permission.READ_LOGS, Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.SET_DEBUG_APP, Manifest.permission.SYSTEM_ALERT_WINDOW, Manifest.permission.GET_ACCOUNTS, Manifest.permission.WRITE_APN_SETTINGS};
            ActivityCompat.requestPermissions(mActivity, mPermissionList, 123);
        }
        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分享監(jiān)聽回調(diào)

/**
 * 分享監(jiān)聽
 */ 
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, UMAuthListener umAuthListener) {
        PublicStaticData.mShareAPI = UMShareAPI.get(mActivity);
        PublicStaticData.mShareAPI.doOauthVerify(mActivity, type, umAuthListener);
    }

4.5 登錄回調(diào)

/** 
* 第三方登錄監(jiān)聽
*/
 public static UMAuthListener umAuthListener = new UMAuthListener() { 
      @Override
      public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
            Toast.makeText(myActivity, "授權(quán)成功", Toast.LENGTH_SHORT).show();
            Log.e("data",data.toString()); 
      } 
      @Override 
      public void onError(SHARE_MEDIA platform, int action, Throwable t) {
            Toast.makeText( myActivity, "授權(quán)失敗", Toast.LENGTH_SHORT).show();
             Log.e("data",t.toString()+""); 
      } 
      @Override 
      public void onCancel(SHARE_MEDIA platform, int action) { 
            Toast.makeText( myActivity, "關(guān)閉授權(quán)", Toast.LENGTH_SHORT).show(); 
            Log.e("data","關(guān)閉授權(quán)");
       }
};

5.在一些低端手機(jī)上可能會(huì)出現(xiàn)QQ沒有回調(diào)的情況俄周,需要在Activity中添加如下代碼:

/** 
* 友盟QQ登錄需要的回調(diào) 在有些低端手機(jī)上登錄之后不走回調(diào),需要這個(gè)方法
 * @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, resultCode, data); 
}

6髓迎、同樣是沒有回調(diào)峦朗,這次是微信,需要在WXEntryActivity中加入代碼:

 @Override
 protected void handleIntent(Intent intent){ 
      mWxHandler.setAuthListener(new UMAuthListener() { 
            @Override 
            public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
                   Log.e("UMWXHandler fsdfsdfs"+data.toString()); 
            } 
            @Override 
            public void onError(SHARE_MEDIA platform, int action, 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 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;


/**
 * 作者:dell or Xiaomi Li
 * 時(shí)間: 2018/1/25
 * 內(nèi)容:把回調(diào)放在activity里邊,就能直接拿到結(jié)果過處理了
 * 最后修改:
 */
public class UmengShare {
    /**
     * 分享
     *
     * @param mActivity
     * @param title     標(biāo)題
     * @param context   內(nèi)容
     * @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, UMShareListener umShareListener) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CALL_PHONE, Manifest.permission.READ_LOGS, Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.SET_DEBUG_APP, Manifest.permission.SYSTEM_ALERT_WINDOW, Manifest.permission.GET_ACCOUNTS, Manifest.permission.WRITE_APN_SETTINGS};
            ActivityCompat.requestPermissions(mActivity, mPermissionList, 123);
        }
        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();
        }
    }

    /**
     * @param mActivity
     * @param type      登錄方式
     *                  SHARE_MEDIA.QQ
     *                  SHARE_MEDIA.WEIXIN
     *                  SHARE_MEDIA.SINA
     */
    public static void UmengLogin(Activity mActivity, SHARE_MEDIA type, UMAuthListener umAuthListener) {
        PublicStaticData.mShareAPI = UMShareAPI.get(mActivity);
        PublicStaticData.mShareAPI.doOauthVerify(mActivity, type, umAuthListener);
    }

}

在Activity中使用:

case R.id.openShareUmeng:
                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(this).open();
                break;
            case R.id.QQLoginUmeng://QQ登錄
                UmengShare.UmengLogin(MainActivity.this, SHARE_MEDIA.QQ, this);
                break;
            case R.id.WXLoginUmeng://微信登錄
                UmengShare.UmengLogin(MainActivity.this, SHARE_MEDIA.WEIXIN, this);
                break;
            case R.id.SinaLoginUmeng://微博登錄
                UmengShare.UmengLogin(MainActivity.this, SHARE_MEDIA.SINA, this);
                break;
            case R.id.WXLikeUmeng://收藏分享(微信需要有圖片)
                UmengShare.SharePic(MainActivity.this, "測試收藏", "測試收藏內(nèi)容", SHARE_MEDIA.WEIXIN_FAVORITE, picurl, this);
                break;
            case R.id.WXfriendsshareUmeng://朋友圈分享(微信需要有圖片)
                UmengShare.SharePic(MainActivity.this, "測試朋友圈", "測試朋友圈內(nèi)容", SHARE_MEDIA.WEIXIN_CIRCLE, picurl, this);
                break;
            case R.id.WXshareUmeng://微信分享(微信需要有圖片)
                UmengShare.SharePic(MainActivity.this, "測試分享", "測試分享內(nèi)容", SHARE_MEDIA.WEIXIN, picurl, this);
                break;
            case R.id.SinashareUmeng://微博分享
                UmengShare.SharePic(MainActivity.this, "測試微博", "測試微博內(nèi)容", SHARE_MEDIA.SINA, null, this);
                break;
            case R.id.QZONEshareUmeng://空間
                UmengShare.SharePic(MainActivity.this, "測試空間", "測試空間內(nèi)容", SHARE_MEDIA.QZONE, null, this);
                break;
            case R.id.QQshareUmeng://QQ
                UmengShare.SharePic(MainActivity.this, "測試QQ", "測試QQ內(nèi)容", SHARE_MEDIA.QQ, null, this);
                break;

三涣雕、Activity完整代碼:

package com.example.lql.sharesdk;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.lql.sharesdk.utils.LogUtils;
import com.example.lql.sharesdk.utils.PublicStaticData;
import com.example.lql.sharesdk.utils.ShareSDKUtils;
import com.example.lql.sharesdk.utils.UmengShare;
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.HashMap;
import java.util.Map;

import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.onekeyshare.OnekeyShare;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.qq.QQ;
import cn.sharesdk.wechat.friends.Wechat;


public class MainActivity extends Activity implements View.OnClickListener, PlatformActionListener, UMShareListener, UMAuthListener {


    private android.widget.Button openShare;
    private Button QQLogin;
    private Button WXLogin;
    private Button SinaLogin;
    private Button QQshare;
    private Button QZONEshare;
    private Button Sinashare;
    private Button WXshare;
    private Button WXfriendsshare;
    private Button WXLike;
    private Button openShareUmeng;
    private Button QQLoginUmeng;
    private Button WXLoginUmeng;
    private Button SinaLoginUmeng;
    private Button QQshareUmeng;
    private Button QZONEshareUmeng;
    private Button SinashareUmeng;
    private Button WXshareUmeng;
    private Button WXfriendsshareUmeng;
    private Button WXLikeUmeng;


    String picurl = "http://pic33.nipic.com/20130916/3420027_192919547000_2.jpg";//測試圖片地址
    String titleurl = "http://www.haidu.com";//titleurl

    private int SharesdkType;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
        showShare("測試標(biāo)題", "測試文本", picurl,titleurl);
    }

    private void initView() {
        this.SinaLogin = (Button) findViewById(R.id.SinaLogin);
        this.WXLogin = (Button) findViewById(R.id.WXLogin);
        this.QQLogin = (Button) findViewById(R.id.QQLogin);
        this.openShare = (Button) findViewById(R.id.openShare);

        this.WXLike = (Button) findViewById(R.id.WXLike);
        this.WXfriendsshare = (Button) findViewById(R.id.WXfriendsshare);
        this.WXshare = (Button) findViewById(R.id.WXshare);
        this.Sinashare = (Button) findViewById(R.id.Sinashare);
        this.QZONEshare = (Button) findViewById(R.id.QZONEshare);
        this.QQshare = (Button) findViewById(R.id.QQshare);


        this.WXLikeUmeng = (Button) findViewById(R.id.WXLikeUmeng);
        this.WXfriendsshareUmeng = (Button) findViewById(R.id.WXfriendsshareUmeng);
        this.WXshareUmeng = (Button) findViewById(R.id.WXshareUmeng);
        this.SinashareUmeng = (Button) findViewById(R.id.SinashareUmeng);
        this.QZONEshareUmeng = (Button) findViewById(R.id.QZONEshareUmeng);
        this.QQshareUmeng = (Button) findViewById(R.id.QQshareUmeng);
        this.SinaLoginUmeng = (Button) findViewById(R.id.SinaLoginUmeng);
        this.WXLoginUmeng = (Button) findViewById(R.id.WXLoginUmeng);
        this.QQLoginUmeng = (Button) findViewById(R.id.QQLoginUmeng);
        this.openShareUmeng = (Button) findViewById(R.id.openShareUmeng);


        WXLikeUmeng.setOnClickListener(this);
        WXfriendsshareUmeng.setOnClickListener(this);
        WXshareUmeng.setOnClickListener(this);
        SinashareUmeng.setOnClickListener(this);
        QZONEshareUmeng.setOnClickListener(this);
        QQshareUmeng.setOnClickListener(this);
        SinaLoginUmeng.setOnClickListener(this);
        WXLoginUmeng.setOnClickListener(this);
        QQLoginUmeng.setOnClickListener(this);
        openShareUmeng.setOnClickListener(this);


        this.WXLike.setOnClickListener(this);
        this.WXfriendsshare.setOnClickListener(this);
        this.WXshare.setOnClickListener(this);
        this.Sinashare.setOnClickListener(this);
        this.QZONEshare.setOnClickListener(this);
        this.QQshare.setOnClickListener(this);


        this.openShare.setOnClickListener(this);
        this.SinaLogin.setOnClickListener(this);
        this.WXLogin.setOnClickListener(this);
        this.QQLogin.setOnClickListener(this);

    }


    /**
     * @param title  標(biāo)題
     * @param text   內(nèi)容
     * @param picurl 圖片鏈接
     *               <p>
     *               QQ和QQ空間設(shè)置分享鏈接使用setTitleUrl();
     *               設(shè)置標(biāo)題:setTitle
     *               設(shè)置內(nèi)容:setText
     *               設(shè)置網(wǎng)絡(luò)圖片:oks.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");
     *               設(shè)置本地圖片: //oks.setImagePath("/sdcard/test.jpg");//確保SDcard下面存在此張圖片
     *               <p>
     *               微信
     *               url僅在微信(包括好友和朋友圈)中使用
     *               oks.setUrl("http://qq.com");
     */
    private void showShare(String title, String text, String picurl, String titleUrl) {
        OnekeyShare oks = new OnekeyShare();
        //關(guān)閉sso授權(quán)
        oks.disableSSOWhenAuthorize();
        oks.setTitleUrl(titleUrl);
        oks.setTitle(title);
        oks.setText(text);
        if (picurl != null) {
            oks.setImageUrl(picurl);
        }
        // 啟動(dòng)分享GUI
        oks.show(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.openShare:
                showShare("sharesdk測試", "sharesdk測試", "http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg",titleurl);
                break;
            case R.id.QQLogin://QQ登錄
                SharesdkType = ShareSDKUtils.LOGINTYPE;
                ShareSDKUtils.Login(QQ.NAME, this);
                break;
            case R.id.WXLogin://微信登錄
                SharesdkType = ShareSDKUtils.LOGINTYPE;
                ShareSDKUtils.Login(Wechat.NAME, this);
                break;
            case R.id.SinaLogin://微博登錄
                SharesdkType = ShareSDKUtils.LOGINTYPE;
                ShareSDKUtils.Login(SinaWeibo.NAME, this);
                break;
            case R.id.WXLike://收藏分享(微信需要有圖片)
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareWXF("微信收藏分享測試標(biāo)題sharesdk", "微信收藏分享測試內(nèi)容sharesdk", picurl, titleurl, this);
                break;
            case R.id.WXfriendsshare://朋友圈分享(微信需要有圖片)
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareWXM("朋友圈分享測試標(biāo)題sharesdk", "朋友圈分享測試內(nèi)容sharesdk", picurl, titleurl, this);
                break;
            case R.id.WXshare://微信分享(微信需要有圖片)
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareWX("微信分享測試標(biāo)題sharesdk", "微信分享測試內(nèi)容sharesdk", picurl, titleurl, this);
                break;
            case R.id.Sinashare://微博分享
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareSina("Sina分享測試sharesdk", null, this);
                break;
            case R.id.QZONEshare://空間
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareQzone("Qzone分享測試標(biāo)題sharesdk", "Qzone分享測試內(nèi)容sharesdk", picurl, titleurl, this);
                break;
            case R.id.QQshare://QQ
                SharesdkType = ShareSDKUtils.SHARETYPE;
                ShareSDKUtils.shareQQ("Qzone分享測試標(biāo)題sharesdk", "Qzone分享測試內(nèi)容sharesdk", picurl, titleurl, this);
                break;


//--------------------------------------------------------------以上是Sharesdk---------------------------------------------------------
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++華麗分分割線++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//----------------------------------------------------------------以下是友盟-------------------------------------------------------------


            case R.id.openShareUmeng:
                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(this).open();
                break;
            case R.id.QQLoginUmeng://QQ登錄
                UmengShare.UmengLogin(MainActivity.this, SHARE_MEDIA.QQ, this);
                break;
            case R.id.WXLoginUmeng://微信登錄
                UmengShare.UmengLogin(MainActivity.this, SHARE_MEDIA.WEIXIN, this);
                break;
            case R.id.SinaLoginUmeng://微博登錄
                UmengShare.UmengLogin(MainActivity.this, SHARE_MEDIA.SINA, this);
                break;
            case R.id.WXLikeUmeng://收藏分享(微信需要有圖片)
                UmengShare.SharePic(MainActivity.this, "測試收藏", "測試收藏內(nèi)容", SHARE_MEDIA.WEIXIN_FAVORITE, picurl, this);
                break;
            case R.id.WXfriendsshareUmeng://朋友圈分享(微信需要有圖片)
                UmengShare.SharePic(MainActivity.this, "測試朋友圈", "測試朋友圈內(nèi)容", SHARE_MEDIA.WEIXIN_CIRCLE, picurl, this);
                break;
            case R.id.WXshareUmeng://微信分享(微信需要有圖片)
                UmengShare.SharePic(MainActivity.this, "測試分享", "測試分享內(nèi)容", SHARE_MEDIA.WEIXIN, picurl, this);
                break;
            case R.id.SinashareUmeng://微博分享
                UmengShare.SharePic(MainActivity.this, "測試微博", "測試微博內(nèi)容", SHARE_MEDIA.SINA, null, this);
                break;
            case R.id.QZONEshareUmeng://空間
                UmengShare.SharePic(MainActivity.this, "測試空間", "測試空間內(nèi)容", SHARE_MEDIA.QZONE, null, this);
                break;
            case R.id.QQshareUmeng://QQ
                UmengShare.SharePic(MainActivity.this, "測試QQ", "測試QQ內(nèi)容", SHARE_MEDIA.QQ, null, this);
                break;
        }
    }


    /**
     * 友盟QQ登錄需要的回調(diào)   在有些低端手機(jī)上登錄之后不走回調(diào)艰亮,需要這個(gè)方法
     *
     * @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, this);
        PublicStaticData.mShareAPI.onActivityResult(requestCode, resultCode, data);
    }

    //=======================================================ShareSDK的回調(diào)=======================================================

    /**
     * 這里是ShareSDK的回調(diào)
     *
     * @param platform
     * @param i
     * @param hashMap
     */
    @Override
    public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
        if (SharesdkType == ShareSDKUtils.LOGINTYPE) {
            LogUtils.Loge("登錄成功");
            LogUtils.Loge("openid:" + platform.getDb().getUserId());//拿到登錄后的openid
            LogUtils.Loge("username:" + platform.getDb().getUserName());//拿到登錄后的昵稱
        } else {
            LogUtils.Loge("分享成功");
        }
    }

    @Override
    public void onError(Platform platform, int i, Throwable throwable) {
        LogUtils.Loge(SharesdkType == ShareSDKUtils.LOGINTYPE ? "登錄失敗" + throwable.toString() : "分享失敗" + throwable.toString());
    }

    @Override
    public void onCancel(Platform platform, int i) {
        LogUtils.Loge(SharesdkType == ShareSDKUtils.LOGINTYPE ? "登錄取消" : "分享取消");
    }


    //=======================================================友盟的回調(diào)=======================================================
    //這里注意:友盟的分享和登陸回調(diào)是分開的

    /**
     * 友盟分享的回調(diào)
     *
     * @param share_media
     */
    @Override
    public void onResult(SHARE_MEDIA share_media) {
        LogUtils.Loge("分享成功啦");
    }

    @Override
    public void onError(SHARE_MEDIA share_media, Throwable throwable) {
        LogUtils.Loge("分享失敗啦" + throwable.toString());
    }

    @Override
    public void onCancel(SHARE_MEDIA share_media) {
        LogUtils.Loge("分享取消了");
    }

    /**
     * 友盟登陸的回調(diào)
     *
     * @param share_media
     */
    @Override
    public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
        LogUtils.Loge("授權(quán)成功");
        LogUtils.Loge("data:" + map.toString());
        LogUtils.Loge("openid:" + map.get("openid"));
    }

    @Override
    public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
        LogUtils.Loge("授權(quán)失敗:" + throwable.toString());
    }

    @Override
    public void onCancel(SHARE_MEDIA share_media, int i) {
        LogUtils.Loge("關(guān)閉授權(quán)");
    }
}

最后,兩種方式都集成好了挣郭,小伙伴們趕緊去使用吧迄埃。
github:https://github.com/LiQinglin007/Sharesdk

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市兑障,隨后出現(xiàn)的幾起案子侄非,更是在濱河造成了極大的恐慌,老刑警劉巖流译,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逞怨,死亡現(xiàn)場離奇詭異,居然都是意外死亡福澡,警方通過查閱死者的電腦和手機(jī)叠赦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來革砸,“玉大人除秀,你說我怎么就攤上這事糯累。” “怎么了册踩?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵泳姐,是天一觀的道長。 經(jīng)常有香客問我暂吉,道長胖秒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任慕的,我火速辦了婚禮阎肝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘业稼。我一直安慰自己盗痒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布低散。 她就那樣靜靜地躺著俯邓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪熔号。 梳的紋絲不亂的頭發(fā)上稽鞭,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音引镊,去河邊找鬼朦蕴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛弟头,可吹牛的內(nèi)容都是我干的吩抓。 我是一名探鬼主播掉分,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼传趾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了牡借?” 一聲冷哼從身側(cè)響起伦连,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對情侶失蹤雨饺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后惑淳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體额港,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年歧焦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了移斩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖叹哭,靈堂內(nèi)的尸體忽然破棺而出忍宋,到底是詐尸還是另有隱情,我是刑警寧澤风罩,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站舵稠,受9級(jí)特大地震影響超升,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哺徊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一室琢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧落追,春花似錦盈滴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疗垛,卻和暖如春症汹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贷腕。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工背镇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泽裳。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓瞒斩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涮总。 傳聞我的和親對象是個(gè)殘疾皇子胸囱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容