Hello,各位老铁,今天要分享的是一个老生常谈的一个功能,也是网上一搜一大片的技术点,没什么技术含量,就是整合一下,提供一下方便,相对于友盟,ShareSdk中夹杂着一些别的功能,此文封装的绝对纯净,除了官网所提供的,不夹杂任何的代码逻辑,登录就是登录,分享就是分享,实实在在的以官网为标准。

目前已经上传到了GitHub,地址是:

https://github.com/AbnerMing888/AndroidShare

大家可以下载依赖使用,也可以maven远程使用。由于特别简单,本文概述如下:

1、使用步骤

2、功能具体调用

3、其他注意事项

4、总结

一、使用步骤

第一步,根项目下build.gradle

repositories {……maven { url "https://gitee.com/AbnerAndroid/android-maven/raw/master" }}

第二步,在需要的module下build.gradle

 implementation 'com.vip:share:1.0.0'

第三步,初始化,传自己申请的微信,QQ,微博信息

  ShareUtils.get().initShare(this,BuildConfig.WX_ID,BuildConfig.QQ_ID,BuildConfig.WB_KEY)

第四步,清单文件注册,WXEntryActivity需要在wxapi包下创建,一定要按照标准,可直接复制Demo中的,tencent1112002456是填自己申请的。

<activityandroid:name=".wxapi.WXEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><activityandroid: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="tencent1112002456" /></intent-filter></activity>

二、功能具体调用

具体的功能调用,大家可以直接参考Demo中的MainActivity,或参照下面。

QQ登录

ShareUtils.get().login(this, ShareUtils.QQ).setOnQqCallBackListener({//登录成功Toast.makeText(this, it.toString(), Toast.LENGTH_LONG).show()}, {//登录失败})

微信登录,回调在WXEntryActivity类中

ShareUtils.get().login(this, ShareUtils.WEIXIN)

微博登录

ShareUtils.get().login(this, ShareUtils.WEIBO).setOnWbCallBackListener({//成功Toast.makeText(this, "微博登录成功", Toast.LENGTH_LONG).show()}, {//失败})

QQ好友分享链接

//注意,图片地址需要自己生成,这里我使用的是简单的测试
val absoluteFile = Environment.getExternalStorageDirectory().absoluteFile
val imagePath = "$absoluteFile/ic_launcher.png"
ShareUtils.get().qwShareUrl(this,ShareUtils.QQ,"我是测试分享标题","我是测试分享链接","https://www.vipandroid.cn/ming/page/open.html",imagePath,).setOnQqCallBackListener({Log.e(TAG, "分享成功")}, {Log.e(TAG, "分享失败")})

QQ好友分享图片

//注意,图片地址需要自己生成,这里我使用的是简单的测试
val absoluteFile = Environment.getExternalStorageDirectory().absoluteFile
val imagePath = "$absoluteFile/ic_launcher.png"
ShareUtils.get().qwShareImage(this,ShareUtils.QQ,imagePath,).setOnQqCallBackListener({Log.e(TAG, "分享成功")}, {Log.e(TAG, "分享失败")})

QQ空间分享链接

//注意,图片地址需要自己生成,这里我使用的是简单的测试
val absoluteFile = Environment.getExternalStorageDirectory().absoluteFile
val imagePath = "$absoluteFile/ic_launcher.png"
ShareUtils.get().qwShareUrl(this,ShareUtils.QQ,"我是测试分享标题","我是测试分享链接","https://www.vipandroid.cn/ming/page/open.html",imagePath,ShareUtils.SCENE)

QQ空间分享图片

//注意,图片地址需要自己生成,这里我使用的是简单的测试
val absoluteFile = Environment.getExternalStorageDirectory().absoluteFile
val imagePath = "$absoluteFile/ic_launcher.png"
ShareUtils.get().qwShareImage(this,ShareUtils.QQ,imagePath,ShareUtils.SCENE).setOnQqCallBackListener({Log.e(TAG, "分享成功")}, {Log.e(TAG, "分享失败")})

微博分享图片

//注意,图片地址需要自己生成,这里我使用的是简单的测试
val absoluteFile = Environment.getExternalStorageDirectory().absoluteFile
val imagePath = "$absoluteFile/ic_launcher.png"
ShareUtils.get().qwShareImage(this, ShareUtils.WEIBO, imagePath)

微博分享链接

//注意,图片地址需要自己生成,这里我使用的是简单的测试
val absoluteFile = Environment.getExternalStorageDirectory().absoluteFile
val imagePath = "$absoluteFile/ic_launcher.png"
ShareUtils.get().qwShareUrl(this, ShareUtils.WEIBO,"我是测试标题", "我是测试描述", "https://www.vipandroid.cn", imagePath)

微信好友分享链接

//注意,图片地址需要自己生成,这里我使用的是简单的测试
val absoluteFile = Environment.getExternalStorageDirectory().absoluteFile
val imagePath = "$absoluteFile/ic_launcher.png"
ShareUtils.get().qwShareUrl(this,ShareUtils.WEIXIN,"我是测试标题","我是测试描述","https://www.vipandroid.cn",imagePath)

微信好友分享图片

//注意,图片地址需要自己生成,这里我使用的是简单的测试
val absoluteFile = Environment.getExternalStorageDirectory().absoluteFile
val imagePath = "$absoluteFile/ic_launcher.png"
ShareUtils.get().qwShareImage(this, ShareUtils.WEIXIN, imagePath)

微信朋友圈分享链接

//注意,图片地址需要自己生成,这里我使用的是简单的测试
val absoluteFile = Environment.getExternalStorageDirectory().absoluteFile
val imagePath = "$absoluteFile/ic_launcher.png"
ShareUtils.get().qwShareUrl(this,ShareUtils.WEIXIN,"我是测试标题","我是测试描述","https://www.vipandroid.cn",imagePath, ShareUtils.SCENE)

微信朋友圈分享图片

//注意,图片地址需要自己生成,这里我使用的是简单的测试
val absoluteFile = Environment.getExternalStorageDirectory().absoluteFile
val imagePath = "$absoluteFile/ic_launcher.png"
ShareUtils.get().qwShareImage(this, ShareUtils.WEIXIN, imagePath, ShareUtils.SCENE)

三、其他注意事项

回调

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)if (data != null) {//QQ回调ShareUtils.get().onQqActivityResult(requestCode, resultCode, data)//微博回调ShareUtils.get().onWbShareActivityResult(data, object : WbShareCallback {override fun onComplete() {}override fun onError(p0: UiError?) {}override fun onCancel() {}})}}

WXEntryActivity

用于接收微信登录或分享后的状态回调,可以在这里做一些其他的操作。

class WXEntryActivity : Activity(), IWXAPIEventHandler {private var mIWXAPI: IWXAPI? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)mIWXAPI = WXAPIFactory.createWXAPI(this, BuildConfig.WX_ID)mIWXAPI!!.handleIntent(intent, this)}override fun onNewIntent(intent: Intent?) {super.onNewIntent(intent)setIntent(intent)mIWXAPI!!.handleIntent(intent, this)}override fun onReq(resp: BaseReq?) {}override fun onResp(resp: BaseResp?) {when (resp!!.errCode) {BaseResp.ErrCode.ERR_OK -> {if (resp.type == ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX) {//分享,做一些其他操作finish()} else if (resp.type == ConstantsAPI.COMMAND_SENDAUTH) { //登陆val code = (resp as SendAuth.Resp).codeToast.makeText(this, "微信登录成功", Toast.LENGTH_LONG).show()//根据code,和服务端进行绑定,获取信息后执行后续操作finish()}}else -> {finish()}}}}

混淆策略

-keep class com.tencent.mm.opensdk.** {*;}-keep class com.tencent.wxop.** {*;}-keep class com.tencent.mm.sdk.** {*;}-keep class * extends android.app.Dialog

四、总结

关于文中的分享图片地址,大家记得改为自己要分享的图片地址,QQ的ID,微信的ID,微博的KEY一定要设置自己申请的,并且要和应用包名,签名信息保持一致的。

集成一个以官网(微信,QQ,微博)为标准的登录分享功能相关推荐

  1. 二当家的官网微信小程序源码实例解析

    版权声明:转载请注明原创地址 https://blog.csdn.net/u013032788/article/details/54376774 二当家的官网微信小程序源码实例解析,微信小程序开发教程 ...

  2. VUE H5页面微信/QQ/微博 分享连接设置

    VUE H5页面微信/QQ/微博 分享连接设置 问题 想改变分享的标题.副标题.图片以及重定向打开的地址? 解决 第一步:在项目控制台里面 npm i -S weixin-js-sdk ( 然后视情况 ...

  3. 用模板建站建一个公司官网好吗?

    建立一个公司官网不管是哪个行业的官网网站,都会代表自己公司形象或者展示产品形象,目前的主流建站方式是用模板建站方式,那用网站模板建一个公司官网,这样的方法可行吗?好吗?效果怎么样呢? 首先我们来分析: ...

  4. 前端H5各种qq,微博,fb,whatsapp等网页分享的链接

    ####前端H5各种qq,微博,fb,whatsapp等网页分享的链接(我用到过的,一点点汇总) 代码链接如下: <a href = "https://sns.qzone.qq.com ...

  5. 微信QQ的二维码登录原理js代码解析

    这篇文章主要大家详细解析了微信QQ的二维码登录原理js代码, 具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在很多地方就是都出现了使用二维码登录,二维码付款,二维码账户等应用(这里的二维码种马,诈 ...

  6. 微信开发-js接口的使用无法使用分享功能的一些说明

    微信里面的一些js接口会跟想要的有所出入,比如分享接口的调用,不能用onclick绑定自定义按钮调用,只能使用微信页面自带菜单里的分享功能进行分享,可以改变的是自定义分享内容,我测试的是分享到微信好友 ...

  7. mysql查询使用qq邮箱注册_Spring Boot实现qq邮箱验证码注册和登录验证功能

    1.登录注册思路 这是一个使用spring boot做的一个qq邮箱注册和登录的项目. 没写前端页面,使用postman测试.有截图详细. 1.1.思路 注册:通过输入的邮箱发送验证码,检验前端传来的 ...

  8. 关于xampp集成环境的官网下载

    在xampp的官网上选择对应系统的版本进行下载,官网地址:https://www.apachefriends.org/zh_cn/index.html 找到这个 正在下载 我先将其上传至普通用户下. ...

  9. 一分钱不用花,一分钟搭建一个微官网

    一般企业在运作的过程中是需要一个官网的,一方面便于顾客了解企业做的是哪方面的业务,增近了解.另外一方面也便于求职者了解企业,一个清晰明了的官网无疑是一个加分项. 但是日常搭建官网是个麻烦的事情,笔者曾 ...

最新文章

  1. Java项目:实现个人博客系统(java+springboot+mybatis+redis+vue+elementui+Mysql)
  2. python多线程信息提示
  3. AndroidStudio报错:Emulator: I/O warning : failed to load external entity file:/C:/Users/Administrator
  4. 模拟器上安装不能被卸载的apk
  5. 一次堆外OOM问题排查
  6. 15 款Python编辑器的优缺点,别再问我“选什么编辑器”啦!
  7. 李开复:人工智能行业发展与投资趋势
  8. 福利来啦!!Python基础语法干货
  9. Android通知栏Notification弹出横幅显示的解决方法
  10. flex-direction css3属性设定弹性盒子模型子元素反向排列
  11. OpenCv图像像素操作
  12. 外企程序员常用英语单词
  13. linux 查看链接文件,Linux下的链接文件详解
  14. word中取消链接上一节在哪_在WORD中怎样取消与上一节相同
  15. 如何高效,安全,稳定的管理多个亚马逊,facebook,google等帐号? 如何配合使用VMlogin防关联,反指纹浏览器操作,同时多开多个帐号?911 S5 多端口转发如何设置?
  16. [AutoVue开发手册]第一篇——自定义Applet脚本
  17. 俄罗斯方块游戏开发(VC++ mfc dialog模式)
  18. 【Maven】高级应用:私服(nexus)搭建及使用、自定义项目骨架(archtype)
  19. 罗克韦尔Rockwell Automation EDI 项目
  20. Git 分支合并情况

热门文章

  1. 【NLP】Praat库(2) Batch processing of files
  2. 《孙悟空是个好员工》对《心经》的注解(摘抄)
  3. 在线查询12306账号是否泄露
  4. 两大h264视频分析工具
  5. 怎么向表结构是自增长的表中插入一条数据 SQLCODE=-798, SQLSTATE=428C9, SQLERRMC=ID
  6. python编程圆面积_Python编程1——Python计算圆的周长和面积
  7. 超棒的NFS文档-来自chinaunix,讲到的NFS的几乎所有方面,包括版本、参数设定等...
  8. 装修房子流程步骤详解图
  9. 《实用多媒体技术》课程标准
  10. 《诚信》——赤兔之死