From 1dacab2000956642de53b57b3559d94d57a01c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=AD=90=E7=BB=B4?= Date: Thu, 22 Dec 2022 13:50:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=98=A5=E8=8A=82=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E2=80=94=E9=9B=86=E2=80=9C=E8=90=8C=E5=85=94=E7=A6=8F=E7=AD=BE?= =?UTF-8?q?=E2=80=9D=EF=BC=8C=E5=BE=97=E6=96=B0=E5=B9=B4=E5=A5=BD=E7=A4=BC?= =?UTF-8?q?=E2=80=94=E5=AE=A2=E6=88=B7=E7=AB=AF=20https://jira.shanqu.cc/b?= =?UTF-8?q?rowse/GHZS-802?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gh/common/DefaultJsApi.kt | 14 +++++- .../java/com/gh/common/DefaultUrlHandler.kt | 21 +++++++-- .../com/gh/common/util/MessageShareUtils.java | 46 +++++++++++++++++++ .../fragment/HomeSearchToolWrapperFragment.kt | 15 ++++++ .../common/constant/EntranceConsts.java | 2 + 5 files changed, 92 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/gh/common/DefaultJsApi.kt b/app/src/main/java/com/gh/common/DefaultJsApi.kt index fd7d58f681..62a8e8047f 100644 --- a/app/src/main/java/com/gh/common/DefaultJsApi.kt +++ b/app/src/main/java/com/gh/common/DefaultJsApi.kt @@ -55,8 +55,6 @@ import java.io.BufferedOutputStream import java.io.File import java.io.FileOutputStream import java.util.* -import kotlin.collections.HashMap -import kotlin.collections.HashSet class DefaultJsApi(var context: Context, val entrance: String = "", private var mFragment: Fragment? = null) { @@ -592,6 +590,15 @@ class DefaultJsApi(var context: Context, val entrance: String = "", private var DownloadManager.getInstance().pause(url) } + @JavascriptInterface + fun shareText(event: Any) { + val textShareEvent = event.toString().toObject() ?: TextShareEvent() + if (textShareEvent.text.isNotEmpty() && textShareEvent.type.isNotEmpty()) { + val activity = CurrentActivityHolder.getCurrentActivity() + MessageShareUtils.getInstance(activity).shareTextFromWeb(activity, textShareEvent.text, textShareEvent.type) + } + } + private fun autoUnregisterDownloadObserverIfNeeded(fragment: Fragment?) { fragment?.parentFragmentManager?.registerFragmentLifecycleCallbacks( object : FragmentManager.FragmentLifecycleCallbacks() { @@ -635,6 +642,9 @@ class DefaultJsApi(var context: Context, val entrance: String = "", private var @Keep internal data class ImageShareEvent(var image: String = "", var type: String = "") + @Keep + internal data class TextShareEvent(var text: String = "", var type: String = "") + @Keep internal data class InviteFriendsEvent( var type: String = "", diff --git a/app/src/main/java/com/gh/common/DefaultUrlHandler.kt b/app/src/main/java/com/gh/common/DefaultUrlHandler.kt index 356b468251..f76bc3dfe1 100644 --- a/app/src/main/java/com/gh/common/DefaultUrlHandler.kt +++ b/app/src/main/java/com/gh/common/DefaultUrlHandler.kt @@ -15,25 +15,26 @@ import com.gh.common.util.DirectUtils.directToGameVideo import com.gh.common.util.DirectUtils.directToLegacyVideoDetail import com.gh.common.util.DirectUtils.directToLinkPage import com.gh.common.util.DirectUtils.directToQa +import com.gh.gamecenter.* import com.gh.gamecenter.core.utils.GsonUtils.gson -import com.gh.gamecenter.LibaoDetailActivity -import com.gh.gamecenter.MainActivity -import com.gh.gamecenter.NewsDetailActivity -import com.gh.gamecenter.WebActivity import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.common.entity.LinkEntity +import com.gh.gamecenter.common.eventbus.EBReuse import com.gh.gamecenter.core.AppExecutor import com.gh.gamecenter.common.utils.DialogHelper import com.gh.gamecenter.common.utils.EnvHelper import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.entity.* +import com.gh.gamecenter.eventbus.EBSkip +import com.gh.gamecenter.fragment.MainWrapperFragment import com.gh.gamecenter.gamecollection.publish.GameCollectionEditActivity import com.gh.gamecenter.qa.BbsType import com.gh.gamecenter.qa.video.publish.VideoPublishActivity import com.gh.gamecenter.subject.SubjectActivity import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel import com.lightgame.utils.Utils +import org.greenrobot.eventbus.EventBus import java.nio.charset.Charset object DefaultUrlHandler { @@ -492,6 +493,18 @@ object DefaultUrlHandler { ) } + EntranceConsts.HOST_GAME_LIBRARY -> { + DirectUtils.directToMainActivity(context) + EventBus.getDefault().post(EBSkip(MainActivity.EB_SKIP_MAIN, MainWrapperFragment.INDEX_GAME)) + } + + EntranceConsts.HOST_HOME_GAME_COLLECTION_SQUARE -> { + DirectUtils.directToMainActivity(context) + EventBus.getDefault() + .post(EBSkip(MainActivity.EB_SKIP_MAIN, MainWrapperFragment.INDEX_HOME)) + EventBus.getDefault().post(EBReuse(host)) + } + else -> { if (bringAppToFront) { DirectUtils.directToMainActivity(context) diff --git a/app/src/main/java/com/gh/common/util/MessageShareUtils.java b/app/src/main/java/com/gh/common/util/MessageShareUtils.java index ca5d8a3147..d3799b86f2 100644 --- a/app/src/main/java/com/gh/common/util/MessageShareUtils.java +++ b/app/src/main/java/com/gh/common/util/MessageShareUtils.java @@ -43,6 +43,7 @@ import com.tencent.connect.share.QQShare; import com.tencent.mm.opensdk.modelmsg.SendMessageToWX; import com.tencent.mm.opensdk.modelmsg.WXImageObject; import com.tencent.mm.opensdk.modelmsg.WXMediaMessage; +import com.tencent.mm.opensdk.modelmsg.WXTextObject; import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.WXAPIFactory; import com.tencent.open.TDialog; @@ -311,6 +312,51 @@ public class MessageShareUtils { } } + public void shareTextFromWeb(Activity activity, String text, String type) { + switch (type) { + case "qq": + Utils.toast(mContext, "分享跳转中..."); + if (ShareUtils.isQQClientAvailable(activity)) { + Intent intent = new Intent(); + intent.setAction(Intent.ACTION_SEND); + intent.putExtra(Intent.EXTRA_TEXT, text); + intent.setType("text/plain"); + intent.setPackage("com.tencent.mobileqq"); + intent.setClassName("com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity"); + try { + activity.startActivity(intent); + } catch (Exception e) { + Utils.toast(mContext, "分享失败"); + } + } else { + Utils.toast(mContext, "请安装QQ客户端"); + } + break; + case "wechat": + Utils.toast(mContext, "分享跳转中..."); + + if (!mIWXAPI.isWXAppInstalled() && !PermissionHelper.isGetInstalledListPermissionDisabled(mContext)) { + Utils.toast(mContext, mContext.getString(R.string.share_no_wechat_hint)); + return; + } + + WXTextObject textObj = new WXTextObject(); + textObj.text = text; + + WXMediaMessage msg = new WXMediaMessage(); + msg.mediaObject = textObj; + msg.description = text; + + SendMessageToWX.Req req = new SendMessageToWX.Req(); + req.transaction = buildTransaction("text"); + req.message = msg; + req.scene = SendMessageToWX.Req.WXSceneSession; + + mIWXAPI.sendReq(req); + break; + } + } + //QQ分享 private void qqShare() { Utils.toast(mContext, "分享跳转中..."); diff --git a/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt index 212fcdd5ff..ebc5280031 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt @@ -21,6 +21,7 @@ import com.gh.gamecenter.category.CategoryDirectoryFragment import com.gh.gamecenter.category2.CategoryV2Fragment import com.gh.gamecenter.common.base.adapter.FragmentAdapter import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.eventbus.EBReuse import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.DisplayUtils import com.gh.gamecenter.databinding.FragmentMainHomeWrapperBinding @@ -38,6 +39,8 @@ import com.gh.gamecenter.servers.GameServersTestFragment import com.gh.gamecenter.subject.SubjectFragment import com.google.android.material.appbar.AppBarLayout import com.halo.assistant.fragment.WebFragment +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode import kotlin.math.abs class HomeSearchToolWrapperFragment : SearchToolWrapperFragment() { @@ -576,6 +579,18 @@ class HomeSearchToolWrapperFragment : SearchToolWrapperFragment() { } } + @Subscribe(threadMode = ThreadMode.MAIN) + override fun onEventMainThread(reuse: EBReuse) { + super.onEventMainThread(reuse) + if (reuse.type == EntranceConsts.HOST_HOME_GAME_COLLECTION_SQUARE) { + mFragmentList.forEachIndexed { index, fragment -> + if (fragment is GameCollectionSquareFragment) { + mBinding?.viewPager?.currentItem = index + } + } + } + } + override fun onDarkModeChanged() { super.onDarkModeChanged() getCurrentTab()?.isTopViewShow = true diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java index 60f1e07869..9b4c912b22 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java @@ -72,6 +72,8 @@ public class EntranceConsts { public static final String HOST_GAME_COLLECTION_DETAIL = "game_collection_detail"; public static final String HOST_GAME_COLLECTION_SQUARE = "game_collection_square"; public static final String HOST_GAME_COLLECTION_EDIT = "game_collection_edit"; + public static final String HOST_GAME_LIBRARY = "game_library"; + public static final String HOST_HOME_GAME_COLLECTION_SQUARE = "home_game_collection_square"; public static final String KEY_DATA = "data"; public static final String KEY_MESSAGE = "message"; public static final String KEY_MESSAGE_ID = "message_id";