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

news2024/11/24 10:38:49

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.abner:share:1.0.0'

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

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

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

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


    override 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).code
                    Toast.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一定要设置自己申请的,并且要和应用包名,签名信息保持一致的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python编程 集合

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.集合 1.集合介绍(掌握) 2.集合创建(掌握) 3.添加元素(熟悉) 4.集合…

区域治理杂志区域治理杂志社区域治理编辑部2022年第40期目录

政策 乡村振兴人才发展战略分析 (1) 高庸江 声音《区域治理》投稿&#xff1a;cnqikantg126.com 迈向智能党建&#xff1a;智能媒体在党建工作中的创新运用 (5) 申娟 经验 北京市昌平区节水问题及水资源利用对策研究 (9) 彭聪 重庆市低碳创新政策优化研究 (13) 林芳 …

怎么把Word翻译成中文?建议收藏这些方法

相信不少小伙伴在撰写论文的时候&#xff0c;都有查阅大量的国内外文献吧。有时由于国外文献里面会含有大量的深奥词汇&#xff0c;我们一时半会儿没法马上理解文献的内容。其实我们可以使用软件直接翻译Word文档&#xff0c;那你们知道Word文档怎么翻译吗&#xff1f;有需要对…

【Android App】实战项目之仿抖音的短视频分享App(附源码和演示视频 超详细必看)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 与传统的影视行业相比&#xff0c;诞生于移动互联网时代的短视频是个全新行业&#xff0c;它制作方便又容易传播&#xff0c;一出现就成为大街小巷的时髦潮流。 各行各业的人们均可通过短视频展示自己&#xff0c;短小精悍的视频…

网络面试-0x12 UDP和TCP的区别以及应用场景

一、 UDP &#xff08;user datagram protocol&#xff09;用户数据报协议 ①&#xff1a; 一种简单的面向数据报的通讯协议&#xff0c;即&#xff1a;应用层传下来的报文&#xff0c;不合并&#xff0c;不拆分&#xff0c;只是在其上面加上首部后就交给了下面的网络层。无论应…

Github优秀项目-使用Python基于CPM文本自动生成

基于CPM模型的中文文本生成项目,可用于作文、小说、新闻、古诗等中文生成任务。 虽然说开源的,但是实际部署应用的过程中很多小伙伴还遇见了不少的问题,这里我用自己的方式部署应用,如果还没有实现该功能的小伙伴可以跟我一起来操作。 如果有不了解的小伙伴先来看一下实验…

【多目标进化优化】多目标进化算法的收敛性

0 前言 \quad\quad对 MOEAMOEAMOEA 收敛性的研究是 MOEAMOEAMOEA 研究的重要内容&#xff0c;但目前这方面的研究结果比较少。 一个 MOEAMOEAMOEA 的收敛性可以从两个方面考虑&#xff1b;一是有限时间内的收敛&#xff1b;二是当时间趋向于无穷大时的收敛。第一类收敛是最理想…

Kotlin高仿微信-第9篇-单聊-文本

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点&#xff0c;包括&#xff1a;注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

麦芽糖-阿奇霉素 maltose-Azithromycin 阿奇霉素-PEG-麦芽糖

麦芽糖-阿奇霉素 maltose-Azithromycin 阿奇霉素-PEG-麦芽糖 中文名称&#xff1a;麦芽糖-阿奇霉素 英文名称&#xff1a;maltose-Azithromycin 别称&#xff1a;阿奇霉素修饰麦芽糖&#xff0c;阿奇霉素-麦芽糖 纯度&#xff1a;95% 存储条件&#xff1a;-20C&#xff0c…

webscoket学习

webscoket基本使用 WebSocket - Web API 接口参考 | MDN 使用node编写webscoket服务 nodejs-webscoket 在github的地址↓ GitHub - sitegui/nodejs-websocket: A node.js module for websocket server and client ws和socket.io 是wbscket的两个库 仓库地址&#xff1a;l…

Scala系列-5、scala中的泛型、actor、akka

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 传送门&#xff1a;大数据系列文章目录 目录scala的 泛型给方法定义泛型给类定义泛型泛型的上下界泛型中 非变 协变 和 逆变scala中actor相关内…

echarts中tooltip设为渐变色与模糊背景滤镜

关于echarts各项内容&#xff08;包括图表面积区域&#xff09;设为渐变色已在上篇文章里全部阐述&#xff1a; echarts折线图与柱状图等绘成渐变色的方法 单独将tooltip拉出来再写一篇&#xff0c;是因为用formatter配合超文本的形式在echarts的配置项中&#xff0c;于自定义样…

Python使用magic判断文件MIME类型

文章目录官网安装使用判断文件的MIME类型支持中文的代码问题官网 GitHub - ahupp/python-magic: A python wrapper for libmagic 安装 pip install python-magic pip install python-magic-bin使用 判断文件的MIME类型 代码 # encodingutf-8 import magic #pip install pyt…

希尔贝壳受邀参加IEEE自动语音识别与理解研讨会-ASRU 2021

ASRU 2021 IEEE Automatic Speech Recognition and Understanding Workshop&#xff08;2021年IEEE自动语音识别与理解研讨会&#xff0c;以下简称ASRU&#xff09;&#xff0c;将于2021年12月13日至17日在哥伦比亚卡塔赫纳举行。 ASRU 研讨会是IEEE语音和语言处理技术委员会(…

领悟《信号与系统》之 周期信号的傅里叶变换计算

周期信号的傅里叶变换计算一、周期信号的傅里叶变换存在的条件二、周期信号的傅里叶变换例题&#xff1a;一、周期信号的傅里叶变换存在的条件 典型非周期信号&#xff08;如指数信号&#xff0c;矩形信号等&#xff09;都是满足绝对可积&#xff08;或绝对可和&#xff09;条…

IDEA的日常快捷键大全

更多内容在&#xff1a;https://javaxiaobear.gitee.io/ ​​​​​​第1组&#xff1a;通用型 说明 快捷键 复制代码-copy ctrl c 粘贴-paste ctrl v 剪切-cut ctrl x 撤销-undo ctrl z 反撤销-redo ctrl shift z 保存-save all ctrl s 全选-select all …

(2)点云库处理学习——剔除点云值

1、主要参考 1.1参考地址 (1) 点云离群点剔除 — open3d python_Coding的叶子的博客-CSDN博客_离群点去除 (2) open3d之点云异常值去除&#xff08;笔记5&#xff09;_Satellite_H的博客-CSDN博客 (3)斯坦福经典兔子的点云数据下载地址 下载地址 Model : Bunny 1.2兔子…

3D视觉识别案例:3D无序棒料抓取,阀体圆环上下料,电机定子上料

3D无序棒料抓取 某知名汽车行业 项目背景 长春某知名汽车行业&#xff0c;需求3D视觉实现圆形棒材的上料自动化。 作业流程 钢棒依次经过剪切/锯切下料&#xff0c;从深筐中抓取&#xff0c;先放置在V型二次定位平台上&#xff0c;再从平台抓到输送线上&#xff0c;目标工…

[附源码]SSM计算机毕业设计新冠疫苗线上预约系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

超算,先进计算未来的研究方向有哪些?

超算是一个非常有趣的方向&#xff0c;当人们仰天长望思索宇宙大爆炸和起源时&#xff0c;超算便成为了非常重要的一个研究途径&#xff0c;利用超算平台对中国FAST天眼射电望远镜捕捉到的海量信号进行分析和处理&#xff0c;帮助中科院探索发现了诸如脉冲星、最大原子气体、快…