iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 第三方登录、分享(ShareSDK、友盟)
  • 260
分享到

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

Android 2022-06-06 07:06:50 260人浏览 泡泡鱼
摘要

为下边的项目做准备,写一个第三方登录、分享的demo。分别使用sharesdk和友盟来实现。 先说一下我对两者的使用上的感觉,个人感觉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、打开分享面板



  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、分享到指定平台(此处使用微信和微博为例)


 
  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 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第三方登录


  
  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;

public class ShareSDKUtils {
private static String type="";
  
  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);
  }
  
  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);
  }
  
  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);
  }
  
  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);
  }
  
  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);
  }
  
  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="/file/imgs/upload/202206/06/hcwmechwapb.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分享到置顶平台


  
  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 登录


  
  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中添加如下代码:


  
  @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;

public class UmengShare {
  private static Activity myActivity;
  
  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();
    }
  }
  
  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!

您可能感兴趣的文章:Android第三方登录之QQ登录Android第三方登录之腾讯QQ登录的实例代码Android实现第三方登录的上拉展开,下拉隐藏,下拉隐藏示例Android微信第三方登录(个人笔记)微信第三方登录Android实现代码Android集成新浪微博第三方登录的方法Android实现第三方授权登录、分享以及获取用户资料Android调用第三方QQ登录代码分享React Native第三方平台分享的实例(Android,iOS双平台)Android实现QQ的第三方登录和分享


--结束END--

本文标题: Android 第三方登录、分享(ShareSDK、友盟)

本文链接: https://www.lsjlt.com/news/23642.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • VUE 第三方登录:最佳实践分享
    引言 随着互联网应用的蓬勃发展,用户对便捷性和安全性的要求越来越高。第三方登录已成为当下互联网应用的常见功能,它允许用户使用已有的社交账户信息登录您的应用程序,从而简化注册流程并提高用户体验。 在 Vue 项目中集成第三方登录,可以为用...
    99+
    2024-02-23
    Vue 第三方登录 社交登录 OAuth 安全性
  • Android实战ShareSDk的使用,实现一键分享微信好友
    要在Android应用中实现一键分享到微信好友,你可以使用ShareSDK库。下面是使用ShareSDK实现一键分享微信好友的步骤:...
    99+
    2023-09-21
    Android
  • Android中怎么实现第三方QQ登录
    本篇文章给大家分享的是有关Android中怎么实现第三方QQ登录,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第三方登录之QQ代码区public class ...
    99+
    2023-05-30
    android
  • PHP discord 第三方登录
    成为discord开发者 成为discord开发者创建应用APPLICATION ID 应用ID, PUBLIC KEY 暂时无用(随时可以看)在OAuth2中 CLIENT ID, CLIENT S...
    99+
    2023-09-22
    php
  • Android第三方登录之腾讯QQ登录的实例代码
    布局文件<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录成功" androi...
    99+
    2023-05-31
    android 第三方登录
  • web实现QQ第三方登录
    要实现QQ第三方登录,可以按照以下步骤进行:1. 注册QQ互联开发者账号:前往QQ互联开发者平台(https://connect.q...
    99+
    2023-09-23
    web
  • Jspxcms第三方登录如何配置
    本文小编为大家详细介绍“Jspxcms第三方登录如何配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“Jspxcms第三方登录如何配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。第三方登录支持新浪微博、腾讯Q...
    99+
    2023-06-26
  • 实现 Google 第三方授权登录
    最近做项目要实现Google的第三方登录,这简单的记录一下。 目前Google的第三方登录有很多方案,且官方提供SDK方便接入。但是我这个项目同时要实现网页和客户端。所以选择了 Google OAuth 2.0 的方案。 当然,也可以 《...
    99+
    2023-10-07
    服务器 前端
  • node如何实现github第三方登录
    这篇文章主要介绍了node如何实现github第三方登录的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇node如何实现github第三方登录文章都会有所收获,下面我们一起来看看吧。一、详细流程二、具体流程1.注...
    99+
    2023-07-04
  • Vue如何实现Google第三方登录
    这篇文章主要介绍了Vue如何实现Google第三方登录的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue如何实现Google第三方登录文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • .Net Core实现第三方QQ扫码登录
    目录效果展示:核心实现展示二维码解析扫码结果登录视图登录授权配置Cookie认证策略创建用户登录标识用户退出登录代码开源效果展示: 核心实现 展示二维码 public static...
    99+
    2024-04-02
  • node如何进行微博第三方登录
    这篇文章主要介绍“node如何进行微博第三方登录”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“node如何进行微博第三方登录”文章能帮助大家解决问题。实现效果点击微博登录按钮登录直接扫码登录具体实现...
    99+
    2023-07-04
  • Android接收微信、QQ其他应用打开第三方分享功能
    目录这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在AndroidManifest.xml注册ACTION事件在用于接收分享的Activity里面加接收代码这里给大家分...
    99+
    2022-11-13
    android 接收微信QQ android 接收分享 android第三方分享
  • Java中怎么实现第三方应用登录
    这篇文章给大家介绍Java中怎么实现第三方应用登录,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是OAuth3.0OAuth是一项协议,它为用户资源的授权提供了一个安全、开放而简易的标准,OAuth的授权不会使第三...
    99+
    2023-06-20
  • Android开发中实现登录微信与分享的方法
    本篇文章给大家分享的是有关Android开发中实现登录微信与分享的方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第一步:申请你的AppID;第二步:依赖dependenci...
    99+
    2023-05-31
    android roi
  • VUE 第三方登录:常见问题与解决方案
    第三方登录按钮不显示 问题描述:在页面上添加了第三方登录按钮,但按钮不显示。 解决方案: 检查按钮代码是否正确,确保按钮代码已正确添加到页面中。 检查按钮样式是否正确,确保按钮样式已正确添加到页面中。 检查第三方登录平台是否已正确...
    99+
    2024-02-23
    VUE 第三方登录 常见问题 解决方案 OAuth2.0
  • PHP-钉钉扫码登录对接第三方网站
    这个小功能对于企业内部的一些自用后台网站还是很常用的,对接也相对简单,记录下对接流程。 开发文档:扫码登录第三方网站 - 钉钉开放平台 先登录钉钉开发者后台,创建扫码登录应用授权 开发者后台统一登录 - 钉钉统一身份认证   生成登录用...
    99+
    2023-08-31
    php
  • 浅析node怎么进行微博第三方登录
    接入微博第三方登录可以免注册,对用户的体验更好,今天我们就用nodejs实现微博第三方登录(用其它语言也可以)。【相关教程推荐:nodejs视频教程】实现效果在线实例: http://www.lolmbbs.com/login1、点击微博登...
    99+
    2022-11-22
    node nodejs​ Node.js
  • 第三方网站微信登录java代码实现
    前两个星期在公司中的项目加上了微信登录、绑定的功能,在这里做个记录!一、开发前知识微信开放平台与微信公众平台的区别 1.1 微信公众平台:   ① 地址:https://mp.weixin.qq.com/cgi-bin/loginpage&...
    99+
    2023-05-31
    java 网站 微信登录
  • Vue实现Google第三方登录的示例代码
    目录一、开发者平台配置解决问题BUG一、开发者平台配置 1、进入开发者平台,首先前往Google API 控制台选择或者创建一个项目 谷歌开发者平台 一堆眼花缭乱的API让你...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作