|
|
@@ -2,6 +2,8 @@ package com.adealink.weparty.util
|
|
|
|
|
|
import android.content.Context
|
|
|
import android.content.Intent
|
|
|
+import android.net.Uri
|
|
|
+import android.os.Bundle
|
|
|
import androidx.core.net.toUri
|
|
|
import androidx.fragment.app.FragmentActivity
|
|
|
import com.adealink.frame.aab.util.getCompatString
|
|
|
@@ -12,6 +14,7 @@ import com.adealink.frame.util.PackageUtil
|
|
|
import com.adealink.frame.util.getParamsFromUri
|
|
|
import com.adealink.weparty.R
|
|
|
import com.adealink.weparty.commonui.BaseActivity
|
|
|
+import com.adealink.weparty.commonui.dialogfragment.BaseDialogFragment
|
|
|
import com.adealink.weparty.commonui.toast.util.showToast
|
|
|
import com.adealink.weparty.module.game.GameModule
|
|
|
import com.adealink.weparty.module.game.data.GameEntranceType
|
|
|
@@ -64,6 +67,29 @@ fun goLocalLinkPage(context: Context?, link: String?) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //指定弹窗
|
|
|
+ link.startsWith(AppBaseInfo.deeplinkScheme) && link.contains(INTENT_DIALOG) -> {
|
|
|
+ //打开指定弹窗
|
|
|
+ val activity = context as? FragmentActivity ?: return
|
|
|
+ val uri = Uri.parse(link)
|
|
|
+ val paramsMap = uri.queryParameterNames.associateWith { uri.getQueryParameter(it) }
|
|
|
+ val routerPath = paramsMap["page"]?.let {
|
|
|
+ if (it.startsWith("/")) it else "/$it"
|
|
|
+ }
|
|
|
+ val dialogTag = paramsMap["dialog_tag"] ?: ""
|
|
|
+ if (!routerPath.isNullOrEmpty()) {
|
|
|
+ Router.getRouterInstance<BaseDialogFragment>(routerPath)?.apply {
|
|
|
+ arguments = Bundle().apply {
|
|
|
+ for ((key, value) in paramsMap) {
|
|
|
+ if (value != null) {
|
|
|
+ putString(key, value)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }?.show(activity.supportFragmentManager, dialogTag)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 2.Deeplink连接
|
|
|
link.startsWith(AppBaseInfo.deeplinkScheme) -> {
|
|
|
// 通过DeepLink 跳转的指定页面
|
|
|
@@ -98,4 +124,10 @@ fun goLocalLinkPage(context: Context?, link: String?) {
|
|
|
} catch (e: Exception) {
|
|
|
//ntd.
|
|
|
}
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 定义打开弹窗的deepLink
|
|
|
+ */
|
|
|
+const val INTENT_DIALOG = "open_dialog"
|