iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 实现微信,微博,微信朋友圈,QQ分享的功能
  • 272
分享到

Android 实现微信,微博,微信朋友圈,QQ分享的功能

朋友圈Android 2022-06-06 05:06:14 272人浏览 泡泡鱼
摘要

Android 实现微信,微博,微信朋友圈,QQ分享的功能 一、去各自所在的开发者平台注册相应的Key值;引入相关jar包、权限等 二、ShareUtil工具类 impor

Android 实现微信,微博,微信朋友圈,QQ分享的功能

一、去各自所在的开发者平台注册相应的Key值;引入相关jar包、权限等

二、ShareUtil工具类


import Android.app.Activity;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import com.sina.weibo.sdk.api.ImageObject;
import com.sina.weibo.sdk.api.TextObject;
import com.sina.weibo.sdk.api.WeiboMultiMessage;
import com.sina.weibo.sdk.api.share.IWeiboShareAPI;
import com.sina.weibo.sdk.api.share.SendMultiMessageToWeiboRequest;
import com.sina.weibo.sdk.api.share.WeiboShareSDK;
import com.sina.weibo.sdk.auth.AuthInfo;
import com.sina.weibo.sdk.auth.Oauth2AccessToken;
import com.sina.weibo.sdk.auth.WeiboAuthListener;
import com.sina.weibo.sdk.exception.WeiboException;
import com.tencent.connect.share.QQShare;
import com.tencent.mm.sdk.modelmsg.SendMessageToWX;
import com.tencent.mm.sdk.modelmsg.WXMediaMessage;
import com.tencent.mm.sdk.modelmsg.WXWEBpageObject;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import java.util.List;
import cn.hnshangyu.maker.R;
import cn.hnshangyu.maker.weibo.AccessTokenKeeper;
import cn.hnshangyu.maker.weibo.Constants;

public class ShareUtil {
  
  public static IWeiboShareAPI mWeiboShareAPI;
  //微信分享
  public static final String WEIXIN_SHARE_APP_ID = "wx0c********88488d";
  public static IWXAPI weixin_api;
  public static final String QQ_APP_ID = "11****5659";
  public static Tencent mTencent;
  public static void shareQQ(Activity activity, String sharePath, IUiListener listener) {
    //qq分享
    mTencent = Tencent.createInstance(QQ_APP_ID, activity);
    if (isQQClientAvailable(activity)) {
//      String content = activity.getResources().getString(R.string.ivQrcode_content);
      final Bundle params = new Bundle();
      params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
      params.putString(QQShare.SHARE_TO_QQ_TITLE, "######");
      params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "#############...");
      params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, sharePath);
//      params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "https://www.baidu.com/img/bd_loGo1.png");
      mTencent.shareToQQ(activity, params, listener);
    } else {
      UIUtils.showToast(activity, "请检查是否安装最新版QQ!");
    }
  }
  
  private static boolean isQQClientAvailable(Context context) {
    final PackageManager packageManager = context.getPackageManager();
    List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
    if (pinfo != null) {
      for (int i = 0; i < pinfo.size(); i++) {
        String pn = pinfo.get(i).packageName;
        if (pn.equals("com.tencent.mobileqq")) {
          return true;
        }
      }
    }
    /
  private static ImageObject getImageObj(Activity activity) {
    ImageObject imageObject = new ImageObject();
//    BitmapDrawable bitmapDrawable = (BitmapDrawable) mImageView.getDrawable();
    //设置缩略图。 注意:最终压缩过的缩略图大小不得超过 32kb。
    Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(), R.mipmap.ic_launcher);
    imageObject.setImageObject(bitmap);
    return imageObject;
  }
  static SendMessageToWX.Req req;
  private static final int THUMB_SIZE = 150;
  public static void shareWechatCircle(Activity activity, String sharePath) {
    if (linkWeiXin(activity, sharePath)) {
      req.scene = SendMessageToWX.Req.WXSceneTimeline;
      weixin_api.sendReq(req);
    }
  }
  public static void shareWechat(Activity activity, String sharePath) {
    if (linkWeiXin(activity, sharePath)) {
      req.scene = SendMessageToWX.Req.WXSceneSession;
      weixin_api.sendReq(req);
    }
  }
  //微信分享
  private static boolean linkWeiXin(Activity activity, String sharePath) {
    // 通过WXAPIFactory工厂,获取IWXAPI的实例
    weixin_api = WXAPIFactory.createWXAPI(activity, WEIXIN_SHARE_APP_ID, true);
    if (weixin_api.isWXAppInstalled() && weixin_api.isWXAppSupportAPI()) {
      weixin_api.reGISterApp(WEIXIN_SHARE_APP_ID);
      WXWebpageObject webpageObject = new WXWebpageObject();
      webpageObject.webpageUrl = sharePath;
      WXMediaMessage msg = new WXMediaMessage();
      msg.mediaObject = webpageObject;
      Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(), R.mipmap.ic_launcher);
      msg.setThumbImage(bitmap);
      msg.title = "######";
      msg.description = "###################...";
      req = new SendMessageToWX.Req();
      req.transaction = buildTransaction("webpage");
      req.message = msg;
      return true;
    } else {
      UIUtils.showToast(activity, "请检查是否安装最新版微信!");
      return false;
    }
  }
  private static String buildTransaction(final String type) {
    return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
  }
}

三、分享界面


import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.ImageView;
import com.google.zxing.WriterException;
import com.sina.weibo.sdk.api.share.BaseResponse;
import com.sina.weibo.sdk.api.share.IWeiboHandler;
import com.sina.weibo.sdk.api.share.IWeiboShareAPI;
import com.sina.weibo.sdk.api.share.WeiboShareSDK;
import com.sina.weibo.sdk.constant.WBConstants;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import butterknife.BindView;
import cn.hnshangyu.maker.R;
import cn.hnshangyu.maker.base.BaseActivity;
import cn.hnshangyu.maker.ui.personal.zxing.EncodingHandler;
import cn.hnshangyu.maker.util.ShareUtil;
import cn.hnshangyu.maker.util.UIUtils;
import cn.hnshangyu.maker.weibo.Constants;
public class InviteFriendsActivity extends BaseActivity implements IWeiboHandler.Response {
  @BindView(R.id.iv_qrcode)
  ImageView ivQrcode;
  @BindView(R.id.iv_share_qq)
  ImageView ivShareQq;
  @BindView(R.id.iv_share_weibo)
  ImageView ivShareWeibo;
  @BindView(R.id.iv_share_weixin)
  ImageView ivShareWeixin;
  @BindView(R.id.iv_share_circle_friends)
  ImageView ivShareCircleFriends;
  private Bitmap qrcodeBitmap;
  
  private IWeiboShareAPI mWeiboShareAPI = null;
  //分享链接
  private String sharePath;
  @Override
  protected int getLayoutId() {
    return R.layout.activity_invite_friends;
  }
  @Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    // 从当前应用唤起微博并进行分享后,返回到当前应用时,需要在此处调用该函数
    // 来接收微博客户端返回的数据;执行成功,返回 true,并调用
    // {@link IWeiboHandler.Response#onResponse};失败返回 false,不调用上述回调
    mWeiboShareAPI.handleWeiboResponse(intent, this);
  }
  
  @Override
  protected void initView() {
    sharePath = getResources().getString(R.string.ivQrcode_content);
    onShowTopBack(false);
    onShowTitleBack(true);
    setTitleText(R.string.invite_friends);
    showQRCode();
    // 创建微博分享接口实例
    mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constants.APP_KEY);
    // 注册第三方应用到微博客户端中,注册成功后该应用将显示在微博的应用列表中。
    // 但该附件栏集成分享权限需要合作申请,详情请查看 Demo 提示
    // NOTE:请务必提前注册,即界面初始化的时候或是应用程序初始化时,进行注册
    mWeiboShareAPI.registerApp();
    initListener();
  }
  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 当 Activity 被重新初始化时(该 Activity 处于后台时,可能会由于内存不足被杀掉了),
    // 需要调用 {@link IWeiboShareAPI#handleWeiboResponse} 来接收微博客户端返回的数据。
    // 执行成功,返回 true,并调用 {@link IWeiboHandler.Response#onResponse};
    // 失败返回 false,不调用上述回调
    if (savedInstanceState != null) {
      mWeiboShareAPI.handleWeiboResponse(getIntent(), this);
    }
  }
  private void showQRCode() {
    //生成二维码图片,第一个参数是二维码的内容,第二个参数是正方形图片的边长,单位是像素
//    String content = "Http://m.360buyimg.com/mobilecms/s300x98_jfs/t1363/77/1381395719/60705/ce91ad5c/55dd271aN49efd216.jpg";
//    content = getResources().getString(R.string.ivQrcode_content);
    try {
      qrcodeBitmap = EncodingHandler.createQRCode(sharePath, 400);
      ivQrcode.setImageBitmap(qrcodeBitmap);
    } catch (WriterException e) {
      e.printStackTrace();
    }
  }
  private void initListener() {
    ivShareQq.setOnClickListener(this);
    ivShareWeibo.setOnClickListener(this);
    ivShareWeixin.setOnClickListener(this);
    ivShareCircleFriends.setOnClickListener(this);
  }
  @Override
  protected void onInitClick(View v) {
    super.onInitClick(v);
    switch (v.getId()) {
      case R.id.iv_share_qq:
        ShareUtil.shareQQ(Mactivity, sharePath, shareListener);
        break;
      case R.id.iv_share_weibo:
        ShareUtil.shareWeiBo(mActivity, sharePath);
        break;
      case R.id.iv_share_weixin:
        ShareUtil.shareWechat(mActivity, sharePath);
        break;
      case R.id.iv_share_circle_friends:
        ShareUtil.shareWechatCircle(mActivity, sharePath);
        break;
    }
  }
  @Override
  public void onResponse(BaseResponse baseResponse) {
    if (baseResponse != null) {
      switch (baseResponse.errCode) {
        case WBConstants.ErrorCode.ERR_OK:
          UIUtils.showToast(mContext, "分享成功");
          break;
        case WBConstants.ErrorCode.ERR_CANCEL:
          UIUtils.showToast(mContext, "分享取消");
          break;
        case WBConstants.ErrorCode.ERR_FAIL:
          UIUtils.showToast(mContext, "分享失败");
          break;
      }
    }
  }
  private IUiListener shareListener = new IUiListener() {
    @Override
    public void onComplete(Object o) {
      UIUtils.showToast(mContext, "分享成功");
    }
    @Override
    public void onError(UiError uiError) {
      UIUtils.showToast(mContext, "分享出错");
    }
    @Override
    public void onCancel() {
    }
  };
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == com.tencent.connect.common.Constants.REQUEST_QQ_SHARE) {
      Tencent.onActivityResultData(requestCode, resultCode, data, shareListener);
    }
  }
}

四、Constants类



public interface Constants {
  
  public static final String APP_KEY = "16#####007";
  
//  public static final String REDIRECT_URL = "http://www.sina.com";
  public static final String REDIRECT_URL = "https://api.weibo.com/oauth2/default.html";
  
  public static final String SCOPE =
      "email,direct_messages_read,direct_messages_write,"
          + "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
          + "follow_app_official_microblog," + "invitation_write";
}

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

您可能感兴趣的文章:Android使用友盟集成QQ、微信、微博等第三方分享与登录方法详解Android实现短信、微信、微博分享功能Android实现新浪微博一键分享的实例代码Android APP集成新浪微博分享功能


--结束END--

本文标题: Android 实现微信,微博,微信朋友圈,QQ分享的功能

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

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

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

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

下载Word文档
猜你喜欢
  • Android 实现微信,微博,微信朋友圈,QQ分享的功能
    Android 实现微信,微博,微信朋友圈,QQ分享的功能 一、去各自所在的开发者平台注册相应的Key值;引入相关jar包、权限等 二、ShareUtil工具类 impor...
    99+
    2022-06-06
    朋友圈 Android
  • HTML5怎么实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
    小编给大家分享一下HTML5怎么实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!这是分享按钮:<button onclick="call()&q...
    99+
    2023-06-09
  • Flutter实现微信朋友圈功能
    本文实例为大家分享了Flutter实现微信朋友圈功能的具体代码,供大家参考,具体内容如下 今天给大家实现一下微信朋友圈的效果,下面是效果图 下面还是老样子,还是以代码的方式进行讲解...
    99+
    2022-11-12
  • 关于Android实现简单的微信朋友圈分享功能
    1.先下载微信分享的jar包放在lib目录下,并且添加依赖, 清单文件添加 <activity android:name=".wxapi.WXEntryA...
    99+
    2022-06-06
    朋友圈 Android
  • 微信小程序实现分享到朋友圈的功能
    分享朋友圈官方API:分享到朋友圈 1、分享到朋友圈接口设置事项  2、onShareTimeline()注意事项  3、分享朋友圈后,测试发现,没有数据请求。 用户在朋友圈打开分享的小程序页面,并不会真正打开小程序,而是进入一...
    99+
    2023-09-03
    微信小程序 小程序
  • android实现微信朋友圈发布动态功能
    本文实例为大家分享了android仿微信朋友圈发布动态功能的具体代码,供大家参考,具体内容如下 效果图: 本文概述 用到的开源库:仿照微信的图片选择器,Luban压缩图片,g...
    99+
    2022-06-06
    朋友圈 动态 Android
  • Android实现微信朋友圈发本地视频功能
    一、前言 前一篇文章已经详细介绍了如何使用Xposed框架编写第一个微信插件:摇骰子和猜拳作弊器 本文继续来介绍如何使用Xposed框架编写第二个微信插件,可以将本地小视频发布...
    99+
    2022-06-06
    朋友圈 Android
  • Java如何实现微信公众平台朋友圈分享功能
    这篇文章将为大家详细讲解有关Java如何实现微信公众平台朋友圈分享功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  其实分享的方法在微信官网有较为详细的文档说明,现就其中一些比较绕的步骤进行总结,有问...
    99+
    2023-05-30
    java
  • HTML5如何实现微信聊天界面、微信朋友圈
    这篇文章主要介绍HTML5如何实现微信聊天界面、微信朋友圈,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!html代码片段:<!--BEGIN 打赏--> <...
    99+
    2022-10-19
  • Android中怎么实现微信朋友圈拍照上传功能
    Android中怎么实现微信朋友圈拍照上传功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. PhotoPicker的使用这是一个支持选择多张图片,点击图片放大,图片之间左...
    99+
    2023-05-30
  • Android如何实现仿微信朋友圈全文、收起功能
    小编给大家分享一下Android如何实现仿微信朋友圈全文、收起功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图具体代码(详细解释在代码注释中都有,这里就省...
    99+
    2023-05-30
    android
  • 微信小程序新增分享朋友圈功能的示例分析
    这篇文章主要为大家展示了“微信小程序新增分享朋友圈功能的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序新增分享朋友圈功能的示例分析”这篇文章吧。据新浪科技消息,微信小程序将支持...
    99+
    2023-06-27
  • Flutter中怎么实现一个微信朋友圈功能
    这篇文章给大家介绍Flutter中怎么实现一个微信朋友圈功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。import 'package:dio/dio.dart';import &...
    99+
    2023-06-20
  • 微信小程序嵌套的H5使用小程序分享(分享微信好友或朋友圈)
    需求说明 嵌套在微信小程序中的H5想要使用小程序自带分享功能,分享H5的页面给微信好友或朋友圈 实现原理 H5中可使用wx.miniProgram.postMessage向小程序的webview发送消息,会触发组件的message事件,在小...
    99+
    2023-08-21
    小程序 微信小程序 微信
  • 微信小程序如何开发朋友圈功能
    这篇“微信小程序如何开发朋友圈功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信小程序如何开发朋友圈功能”文章吧。一、开...
    99+
    2023-06-26
  • Android实现微信朋友圈图片和视频播放
    本文实例为大家分享了Android实现微信朋友圈图片和视频播放的具体代码,供大家参考,具体内容如下 1.效果图: 2.源码地址:链接 3.参数控制,是否显示播放按钮 holde...
    99+
    2022-11-12
  • Android 仿微信朋友圈点赞和评论弹出框功能
    贡献/下载源码:https://github.com/mmlovesyy/PopupWindowDemo 本文简单模仿微信朋友圈的点赞和评论弹出框,布局等细节请忽略,着重实现弹...
    99+
    2022-06-06
    仿微信 朋友圈 Android
  • Android仿微信朋友圈点击加号添加图片功能
    本文为大家分享了类似微信朋友圈,点击+号图片,可以加图片功能,供大家参考,具体内容如下 xml: <?xml version="1.0" encoding=...
    99+
    2022-06-06
    图片 朋友圈 Android
  • 微信小程序分享朋友圈图片如何生成
    本文小编为大家详细介绍“微信小程序分享朋友圈图片如何生成”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序分享朋友圈图片如何生成”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。特性简单易用 &mda...
    99+
    2023-06-26
  • 微信小程序如何实现通过保存图片分享到朋友圈功能
    这篇文章给大家分享的是有关微信小程序如何实现通过保存图片分享到朋友圈功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明首先说明一点,小程序内是不能直接分享到朋友圈的。所以只能...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作