This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
frame/share 是 wenext-android-frame 框架中的第三方分享与社交平台封装模块,提供统一的分享接口和动态链接生成功能。
IShareManager: 分享管理器核心接口,提供所有分享功能IShareConfig: 分享配置接口,定义动态链接域名和应用信息IShareCallback: 分享结果回调接口IGetDynamicLinkCallback: 动态链接获取结果回调接口ShareManager: 分享管理器单例实现,支持多渠道分享和动态链接生成shareManager: 全局单例实例,通过 initShareManager(config) 初始化采用策略模式实现多渠道分享:
IShareChannel: 分享渠道抽象接口FacebookShareChannel: Facebook 分享实现(使用 Facebook SDK)IntentShareChannel: 系统 Intent 分享实现(WhatsApp、VK、系统分享等)ShareChannel.FB: FacebookShareChannel.WHATSAPP: WhatsAppShareChannel.VK: VKontakteShareChannel.SYSTEM: 系统分享支持两种动态链接生成方式:
// 分享链接
shareManager.shareLink(activity, ShareChannel.FB, link, callback)
// 分享图文(网络图片)
shareManager.shareImageText(activity, ShareChannel.WHATSAPP, imageUrl, text, callback)
// 分享本地图文
shareManager.shareLocalImageText(activity, ShareChannel.SYSTEM, localPath, text, callback)
// 协程方式
val result = shareManager.generalShareLink(
activity, source, deeplink, metaTitle, metaDesc, metaImageUrl
)
// 异步回调方式
shareManager.generalShareLinkAsync(
activity, source, deeplink, metaTitle, metaDesc, metaImageUrl,
callback = { link -> /* 处理结果 */ }
)
// 处理从外部打开应用的动态链接
shareManager.handleDynamicLinkIntent(intent) { uri ->
// 处理深度链接
}
libs.facebook.share): Facebook 分享功能libs.firebase.dynamic.link): 动态链接生成libs.appsflyer): 可选的 OneLink 分享libs.play.feature.delivery): 应用包管理frame:base: RLT 状态管理和基础框架frame:coroutine: 协程工具封装frame:log: 日志框架frame:util: 工具类(AppUtil、PackageUtil)// 实现配置接口
class MyShareConfig : IShareConfig {
override val httpDeepLinkHost = "your-domain.com"
override val iOSPackageName = "com.yourapp.ios"
override val iOSAppStoreId = "your-app-store-id"
override fun getDynamicLinkPrefix(type: DynamicLinkType): String {
return when(type) {
DynamicLinkType.NORMAL -> "https://yourapp.page.link"
DynamicLinkType.INVITE -> "https://invite.yourapp.page.link"
}
}
}
// 初始化分享管理器
initShareManager(MyShareConfig())
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
shareManager.onActivityResult(requestCode, resultCode, data)
}