集成一个以官网(微信,QQ,微博)为标准的登录分享功能
创始人
2024-02-28 23:17:44

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是填自己申请的。

二、功能具体调用

具体的功能调用,大家可以直接参考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一定要设置自己申请的,并且要和应用包名,签名信息保持一致的。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...