由于第三方(umeng之流)各种sdk内部混乱且权限请求很迷惑,因此简单造轮子用于分享、第三方登录等。 对应社媒的初始化会在使用对应api时惰性进行,开机可不需要提前获取相应权限;也可以手动提前初始化。
目前微博的sdk在初始化时会自动请求权限,因此需要再之前进行权限声明以避免被平台拒绝。
- 微信
- 版本:最新
- 功能:纯文本、图文、图片、url分享,微信授权登录/绑定
- 暂未支持:视频、音乐分享
- 新浪微博
- 版本:11.12.0
- 功能:纯文本、图文、图片分享, 注意:由于URL分享至微博卡片效果较难申请,使用一般的url拼接文字的形式
- 暂未支持:微博登录,其他分享
- 微博分享时,首次有时会没有跳转打开微博app
根据需要添加对应的社媒sdk,不用可以不加以减少包大小
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:+'
implementation 'io.github.sinaweibosdk:core:11.12.0@aar'
初始化仅设置id、key等信息,不会获取用户权限
SocialSDK.setupConfig(PlatformConfig.Builder()
.wechat(微信ID, 微信SECRET)
.weibo(微博id, 微博redirect url, 自定义provider))
分享网页链接
val webParam = ShareWebParam(params.activity)
webParam.url(url).title(title).description(description)
分享图片
val imageParam = ShareImageParam(params.activity)
imageParam.bitmap(bitmap).title(title).url(url)
设置缩略图
// 在线url
param.thumbnail(imageUrl)
// Bitmap
param.thumbnail(bitmap)
// 本地资源
param.thumbnail(res)
设置分享平台
// 微信
param.platform(SocialPlatform.WECHAT)
// 朋友圈
param.platform(SocialPlatform.WECHAT_TIMELINE)
// 微博
param.platform(SocialPlatform.WEIBO)
调用分享
SocialSDK.instance.share(param)
SocialSDK.instance.getAuthorizedInfo(context as Activity,SocialPlatform.WECHAT,object : SocialAuthListener{
override fun onSuccess(platform: SocialPlatform, authInfo: BaseAuthInfo) {
// 认证成功
val openId = (authInfo as WechatAuth).openId
val accessToken = authInfo.accessToken
...
}
override fun onFailure(platform: SocialPlatform, code: Int) {
// error
}
})