a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

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

2019-12-12 05:02:54
字體:
來源:轉載
供稿:網友

為下邊的項目做準備,寫一個第三方登錄、分享的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, 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集成常見分三種登錄分享方式就完成了,整個過程沒有遇到嚴重的問題,整體體驗效果還不錯。上整體代碼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 content,String PicUrl,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 content,String PicUrl,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 content,String PicUrl,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 content,String PicUrl,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 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);  }  /** * 登錄 */  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, 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","分享取消");      }    }  };}

在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",picurl,null);        break;      case R.id.WXshare://微信分享(微信需要有圖片)        ShareSDKUtils.shareWX("微信分享測試標題sharesdk","微信分享測試內容sharesdk",picurl,null);        break;      case R.id.Sinashare://微博分享        ShareSDKUtils.shareSina("Sina分享測試sharesdk",null,MainActivity.this);        break;      case R.id.QZONEshare://空間        ShareSDKUtils.shareQzone("Qzone分享測試標題sharesdk","Qzone分享測試內容sharesdk",picurl,null);        break;      case R.id.QQshare://QQ        ShareSDKUtils.shareQQ("Qzone分享測試標題sharesdk","Qzone分享測試內容sharesdk",picurl,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, int action, Throwable t) {      Toast.makeText( myActivity, "授權失敗", Toast.LENGTH_SHORT).show();      Log.e("data",t.toString()+"");    }    @Override    public void onCancel(SHARE_MEDIA platform, int action) {      Toast.makeText( myActivity, "關閉授權", Toast.LENGTH_SHORT).show();      Log.e("data","關閉授權");    }  };

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, resultCode, data);  }

6、同樣是沒有回調,這次是微信,需要在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 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,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();    }  }  /** * 第三方登錄 * @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);  }  /** * 第三方登錄監聽 */  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, int action, Throwable t) {      Toast.makeText( myActivity, "授權失敗", Toast.LENGTH_SHORT).show();      Log.e("data",t.toString()+"");    }    @Override    public void onCancel(SHARE_MEDIA platform, int action) {      Toast.makeText( myActivity, "關閉授權", Toast.LENGTH_SHORT).show();      Log.e("data","關閉授權");    }  };  /** * 分享監聽 */  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();    }  };}

在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(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,"測試朋友圈","測試朋友圈內容",SHARE_MEDIA.WEIXIN_CIRCLE,picurl);        break;      case R.id.WXshareUmeng://微信分享(微信需要有圖片)        UmengShare.SharePic(MainActivity.this,"測試分享","測試分享內容",SHARE_MEDIA.WEIXIN,picurl);        break;      case R.id.SinashareUmeng://微博分享        UmengShare.SharePic(MainActivity.this,"測試微博","測試微博內容",SHARE_MEDIA.SINA,null);        break;      case R.id.QZONEshareUmeng://空間        UmengShare.SharePic(MainActivity.this,"測試空間","測試空間內容",SHARE_MEDIA.QZONE,null);        break;      case R.id.QQshareUmeng://QQ        UmengShare.SharePic(MainActivity.this,"測試QQ","測試QQ內容",SHARE_MEDIA.QQ,null);        break;

最后,兩種方式都集成好了,小伙伴們趕緊去使用吧。本人能力有效,如果bug純屬正常!建議使用ShareSDK!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久二影院 | aaa级片| 人人干网站 | 中文字幕爱爱视频 | 日韩免费视频一区二区 | 国产黄色免费网站 | 国产欧美在线观看 | 欧美成人精品一区二区三区 | 亚洲一区二区三区 | 国产精品久久久久久久一区探花 | 久久国产精品一区二区三区 | 91精品国产777在线观看 | 欧美一级在线观看 | 亚洲网在线 | 国产精品综合一区二区 | 精品在线看| 狠狠躁夜夜躁人人爽天天高潮 | 蜜桃日韩 | 日韩视频一区二区三区四区 | 久久久国产视频 | 国产在线精品视频 | 精品国产一区二区三区成人影院 | 中文字幕色站 | 黄色小电影网址 | 国产成人免费 | 国产91精品一区二区绿帽 | 青青青国产 | 久久国产精品影视 | 国产97久久 | 欧美一级裸体视频 | 国产视频网 | 一区二区三区在线播放 | 狠狠入ady亚洲精品经典电影 | 国产精品久久久久久亚洲毛片 | 日韩在线免费视频 | 成人免费毛片aaaaaa片 | 男女羞羞视频网站18 | 亚洲电影在线看 | 自拍色图| 国产欧美在线视频 | 日韩国产欧美 |