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

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

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><actionandroid:name="android.intent.action.VIEW"/><categoryandroid:name="android.intent.category.DEFAULT"/><categoryandroid:name="android.intent.category.BROWSABLE"/><dataandroid: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好友分享链接


//注意,图片地址需要自己生成,这里我使用的是简单的测试valabsoluteFile=Environment.getExternalStorageDirectory().absoluteFilevalimagePath="$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好友分享图片


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


QQ空间分享链接


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


QQ空间分享图片


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


微博分享图片


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


微博分享链接


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


微信好友分享链接


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


微信好友分享图片


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


微信朋友圈分享链接


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


微信朋友圈分享图片


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


三、其他注意事项


回调


overridefunonActivityResult(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 {
overridefunonComplete() {
                }
overridefunonError(p0: UiError?) {
                }
overridefunonCancel() {
                }
            })
        }
    }


WXEntryActivity


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


classWXEntryActivity : Activity(), IWXAPIEventHandler {
privatevarmIWXAPI: IWXAPI?=nulloverridefunonCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mIWXAPI=WXAPIFactory.createWXAPI(this, BuildConfig.WX_ID)
mIWXAPI!!.handleIntent(intent, this)
    }
overridefunonNewIntent(intent: Intent?) {
super.onNewIntent(intent)
setIntent(intent)
mIWXAPI!!.handleIntent(intent, this)
    }
overridefunonReq(resp: BaseReq?) {
    }
overridefunonResp(resp: BaseResp?) {
when (resp!!.errCode) {
BaseResp.ErrCode.ERR_OK-> {
if (resp.type==ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX) {
//分享,做一些其他操作finish()
                } elseif (resp.type==ConstantsAPI.COMMAND_SENDAUTH) { //登陆valcode= (respasSendAuth.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一定要设置自己申请的,并且要和应用包名,签名信息保持一致的。

相关文章
|
8月前
|
Java 数据安全/隐私保护 计算机视觉
手机虚拟视频替换摄像头,QQ微信虚拟视频插件,jar代码分享
这段代码演示了如何使用JavaCV捕获视频流、处理帧数据并输出到虚拟摄像头设备。它需要JavaCV和OpenCV库支持
|
11月前
|
弹性计算 机器人 应用服务中间件
一键部署开源Qwen3并集成到钉钉、企业微信
Qwen3系列模型现已正式发布并开源,包含8款“混合推理模型”,其中涵盖两款MoE模型(Qwen3-235B-A22B与Qwen3-30B-A3B)及六个Dense模型。阿里云计算巢已支持Qwen3-235B-A22B和Qwen3-32B的私有化部署,用户可通过计算巢轻松完成部署,并借助AppFlow集成至钉钉机器人或企业微信。文档详细介绍了从模型部署、创建应用到配置机器人的全流程,帮助用户快速实现智能助手的接入与使用。
1000 19
一键部署开源Qwen3并集成到钉钉、企业微信
|
10月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1941 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
6788 38
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
9月前
|
数据安全/隐私保护
陌陌头像留V的最好方法,陌陌最新留QQ号技巧,陌陌动态最聪明的留微信
本资料分享社交平台隐秘留联系方式的方法,包含微信头像艺术化处理、二维码变形术,以及QQ号谐音替换、图片分割等技巧。
|
人工智能 安全 机器人
LangBot:无缝集成到QQ、微信等消息平台的AI聊天机器人平台
LangBot 是一个开源的多模态即时聊天机器人平台,支持多种即时通信平台和大语言模型,具备多模态交互、插件扩展和Web管理面板等功能。
2457 14
LangBot:无缝集成到QQ、微信等消息平台的AI聊天机器人平台
|
弹性计算 人工智能 应用服务中间件
一键部署开源DeepSeek并集成到企业微信
DeepSeek近期发布了两款先进AI模型V3和R1,分别适用于通用应用和推理任务。由于官方API流量过大,建议通过阿里云的计算巢进行私有化部署,以确保稳定使用。用户无需编写代码即可完成部署,并可通过AppFlow轻松集成到钉钉、企业微信等渠道。具体步骤包括选择适合的机器资源、配置安全组、创建企业微信应用及连接流,最后完成API接收消息配置和测试应用。整个过程简单快捷,帮助用户快速搭建专属AI服务。
2156 7
一键部署开源DeepSeek并集成到企业微信
|
弹性计算 应用服务中间件 API
AppFlow:无代码部署Dify并集成到企业微信
本文介绍如何通过计算巢AppFlow完成Dify的无代码部署,并将Dify应用集成到企业微信中使用。具体步骤包括:创建企业微信应用,获取AgentID和Secret;使用计算巢AppFlow模板创建连接流,配置Dify和企业微信的鉴权凭证;配置企业微信API接收消息和可信IP;最后测试应用确保正常运行。文中还提供了常见问题的解决方案,如域名主体校验未通过和配置企业可信IP报错等。
3394 11
AppFlow:无代码部署Dify并集成到企业微信
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
3612 12
|
监控 算法 测试技术
即时通讯技术文集(第45期):微信、QQ技术精华合集(Part2) [共14篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第45 期。
186 3

热门文章

最新文章