blzb-android/app/src/main/java/com/cheng/bole/manager/ShareManager.kt

166 lines
5.5 KiB
Kotlin

package com.cheng.bole.manager
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.text.TextUtils
import androidx.core.content.FileProvider
import androidx.fragment.app.FragmentActivity
import com.cheng.bole.R
import com.example.base.extensions.toast
import com.umeng.socialize.ShareAction
import com.umeng.socialize.UMShareListener
import com.umeng.socialize.bean.SHARE_MEDIA
import com.umeng.socialize.media.UMImage
import com.umeng.socialize.media.UMVideo
import com.umeng.socialize.media.UMWeb
import java.io.File
object ShareManager {
/**
* 分享媒体文件
*/
fun shareFile(context: Context, file: File) {
val uri = FileProvider.getUriForFile(context,"${context.packageName}.fileprovider", file)
val intent = Intent(Intent.ACTION_SEND)
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.putExtra(Intent.EXTRA_STREAM, uri)
intent.setType(if (file.extension == "mp4") "video/mp4" else if (file.extension == "mp3") "audio/x-mpeg" else "image/jpeg") //分享文件类型
context.startActivity(Intent.createChooser(intent, "分享"))
}
/**
* 分享
*/
fun shareUrl(
activity: FragmentActivity,
shareMedia: SHARE_MEDIA,
shareBean: com.cheng.bole.bean.WxShareEntity,
clickFun: () -> Unit,
) {
if (!TextUtils.isEmpty(shareBean.link)) {
val web = UMWeb(shareBean.link)
web.title = shareBean.title
web.setThumb(UMImage(activity, R.mipmap.ic_launcher_icon))
web.description = shareBean.content
ShareAction(activity).withMedia(web).setPlatform(shareMedia)
.setCallback(object : UMShareListener {
/**
* 分享成功的回调
* @param platform 平台类型
*/
override fun onResult(platform: SHARE_MEDIA) {
clickFun.invoke()
}
/**
* 分享取消的回调
* @param platform 平台类型
*/
override fun onCancel(platform: SHARE_MEDIA) {
toast("取消分享")
}
/**
* 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
override fun onError(platform: SHARE_MEDIA, t: Throwable) {
toast("分享失败,请重试")
}
/**
* 分享开始的回调
* @param platform 平台类型
*/
override fun onStart(platform: SHARE_MEDIA) {}
}).share()
}
}
fun shareImageOnWeChat(activity: Activity, image: UMImage) {
image.title = ""
image.description = ""
image.setThumb(image)
ShareAction(activity).withMedia(image).withText("")
.setPlatform(SHARE_MEDIA.WEIXIN)
.setCallback(object : UMShareListener {
/**
* 分享成功的回调
* @param platform 平台类型
*/
override fun onResult(platform: SHARE_MEDIA) {
toast("分享成功")
}
/**
* 分享取消的回调
* @param platform 平台类型
*/
override fun onCancel(platform: SHARE_MEDIA) {
toast("取消分享")
}
/**
* 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
override fun onError(platform: SHARE_MEDIA, t: Throwable) {
toast("分享失败,请重试")
}
/**
* 分享开始的回调
* @param platform 平台类型
*/
override fun onStart(platform: SHARE_MEDIA) {}
}).share()
}
fun shareFileOnWeChat(activity: Activity, file: File) {
val video = UMVideo(file)
ShareAction(activity).withMedia(video)
.setPlatform(SHARE_MEDIA.WEIXIN)
.setCallback(object : UMShareListener {
/**
* 分享成功的回调
* @param platform 平台类型
*/
override fun onResult(platform: SHARE_MEDIA) {
toast("分享成功")
}
/**
* 分享取消的回调
* @param platform 平台类型
*/
override fun onCancel(platform: SHARE_MEDIA) {
toast("取消分享")
}
/**
* 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
override fun onError(platform: SHARE_MEDIA, t: Throwable) {
toast("分享失败,请重试")
}
/**
* 分享开始的回调
* @param platform 平台类型
*/
override fun onStart(platform: SHARE_MEDIA) {}
}).share()
}
}