# Conflicts: # app/src/main/java/com/gh/common/databind/BindingAdapters.java # app/src/main/java/com/gh/gamecenter/cloudarchive/CloudArchiveManagerActivity.kt # app/src/main/java/com/gh/gamecenter/cloudarchive/CloudArchiveManagerViewModel.kt # app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt # app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersDetailReportViewHolder.kt # app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersDetailViewHolder.kt # app/src/main/java/com/gh/vspace/VHelper.kt # app/src/main/res/layout/dialog_servers_calendear_detail.xml # app/src/main/res/layout/dialog_servers_calendear_detail_item.xml # app/src/main/res/layout/dialog_servers_calendear_detail_report.xml # module_common/src/main/res/drawable/download_button_normal_style.xml
309 lines
12 KiB
Kotlin
309 lines
12 KiB
Kotlin
package com.gh.gamecenter
|
|
|
|
import android.content.Context
|
|
import android.content.Intent
|
|
import android.os.Bundle
|
|
import android.text.TextUtils
|
|
import android.view.KeyEvent
|
|
import android.view.View
|
|
import com.alibaba.android.arouter.facade.annotation.Route
|
|
import com.gh.gamecenter.common.base.activity.ToolBarActivity
|
|
import com.gh.gamecenter.common.constant.Constants
|
|
import com.gh.gamecenter.common.constant.EntranceConsts
|
|
import com.gh.gamecenter.common.constant.RouteConsts
|
|
import com.gh.gamecenter.common.utils.EnvHelper
|
|
import com.gh.gamecenter.common.utils.updateStatusBarColor
|
|
import com.gh.gamecenter.feature.entity.ConcernEntity
|
|
import com.gh.gamecenter.feature.entity.NewsEntity
|
|
import com.gh.gamecenter.common.entity.ToolBoxEntity
|
|
import com.halo.assistant.fragment.WebFragment
|
|
|
|
@Route(path = RouteConsts.activity.webActivity)
|
|
open class WebActivity : ToolBarActivity() {
|
|
private var mIsFullScreen = false
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
val bundle = intent.getBundleExtra(NORMAL_FRAGMENT_BUNDLE)
|
|
if (bundle != null) {
|
|
val mGameName = bundle.getString(WebFragment.KEY_GAME_NAME)
|
|
val mIsBackpressRequireConfirmation =
|
|
bundle.getBoolean(WebFragment.KEY_REQUIRE_BACK_CONFIRMATION, false)
|
|
mIsFullScreen = !TextUtils.isEmpty(mGameName) && mIsBackpressRequireConfirmation
|
|
if (mIsFullScreen) {
|
|
setTheme(R.style.AppFullScreenTheme)
|
|
}
|
|
super.onCreate(savedInstanceState)
|
|
if (mIsFullScreen) {
|
|
hideToolbar(true)
|
|
}
|
|
} else {
|
|
super.onCreate(savedInstanceState)
|
|
}
|
|
updateStatusBarColor(R.color.ui_surface, R.color.ui_surface)
|
|
}
|
|
|
|
override fun provideNormalIntent(): Intent {
|
|
return getTargetIntent(this, WebActivity::class.java, WebFragment::class.java)
|
|
}
|
|
|
|
override fun provideNavigationItemClickListener(): View.OnClickListener {
|
|
val bundle = intent.getBundleExtra(NORMAL_FRAGMENT_BUNDLE)
|
|
return if (bundle != null) {
|
|
val isTools = bundle.getBoolean(WebFragment.KEY_ISTOOLS, false)
|
|
val isOpenNativePage = bundle.getBoolean(WebFragment.KEY_OPEN_NATIVE_PAGE, false)
|
|
if (isTools || isOpenNativePage) {
|
|
View.OnClickListener { finish() }
|
|
} else super.provideNavigationItemClickListener()
|
|
} else {
|
|
super.provideNavigationItemClickListener()
|
|
}
|
|
}
|
|
|
|
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
|
|
if (targetFragment is WebFragment) {
|
|
val webFragment = targetFragment as WebFragment
|
|
val consumed = webFragment.onKeyDown(keyCode, event)
|
|
if (consumed) {
|
|
return true
|
|
}
|
|
}
|
|
return super.onKeyDown(keyCode, event)
|
|
}
|
|
|
|
override fun onDarkModeChanged() {
|
|
super.onDarkModeChanged()
|
|
updateStatusBarColor(R.color.ui_surface, R.color.ui_surface)
|
|
}
|
|
|
|
companion object {
|
|
// 获取带分享按钮页面
|
|
@JvmStatic
|
|
fun getWebIntentByShare(context: Context?, url: String?, showWebShare: Boolean, entrance: String): Intent {
|
|
val bundle = Bundle()
|
|
bundle.putBoolean(EntranceConsts.KEY_WEB_SHARE, showWebShare)
|
|
bundle.putString(EntranceConsts.KEY_URL, url)
|
|
bundle.putBoolean(WebFragment.KEY_LEAVE_WEB_PAGE_TO_HANDLE_TITLE, true)
|
|
bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance)
|
|
return getWebTargetIntent(context, bundle, url)
|
|
}
|
|
|
|
// 获取通用页面
|
|
@JvmStatic
|
|
fun getWebIntent(context: Context, title: String, url: String): Intent {
|
|
val bundle = Bundle()
|
|
bundle.putString(EntranceConsts.KEY_GAMENAME, title)
|
|
bundle.putString(EntranceConsts.KEY_URL, url)
|
|
return getTargetIntent(context, WebActivity::class.java, WebFragment::class.java, bundle)
|
|
}
|
|
|
|
// 获取第三方SDK目录
|
|
@JvmStatic
|
|
fun getThirdPartySdkStatementIntent(context: Context): Intent {
|
|
val bundle = Bundle()
|
|
bundle.putString(
|
|
EntranceConsts.KEY_GAMENAME,
|
|
context.getString(R.string.third_party_sdk_title)
|
|
)
|
|
bundle.putString(
|
|
EntranceConsts.KEY_URL,
|
|
context.getString(R.string.third_party_sdk_statement_url)
|
|
)
|
|
return getTargetIntent(
|
|
context,
|
|
WebActivity::class.java,
|
|
WebFragment::class.java, bundle
|
|
)
|
|
}
|
|
|
|
// 获取游戏服务上传准则页
|
|
@JvmStatic
|
|
fun getUploadPolicyIntent(context: Context): Intent {
|
|
val bundle = Bundle()
|
|
// bundle.putString(EntranceUtils.KEY_GAMENAME, context.getString(R.string.upload_game_policy_title));
|
|
bundle.putBoolean(WebFragment.KEY_COMPLETION_TITLE, true)
|
|
bundle.putString(
|
|
EntranceConsts.KEY_URL,
|
|
context.getString(R.string.upload_game_policy_url)
|
|
)
|
|
return getTargetIntent(
|
|
context,
|
|
WebActivity::class.java,
|
|
WebFragment::class.java, bundle
|
|
)
|
|
}
|
|
|
|
// 获取工具箱页面
|
|
@JvmStatic
|
|
fun getWebByCollectionTools(
|
|
context: Context?,
|
|
toolBoxEntity: ToolBoxEntity,
|
|
isCollectionTools: Boolean
|
|
): Intent {
|
|
val bundle = Bundle()
|
|
bundle.putString(EntranceConsts.KEY_URL, toolBoxEntity.url)
|
|
bundle.putBoolean(WebFragment.KEY_ISTOOLS, true)
|
|
bundle.putString(EntranceConsts.KEY_GAMENAME, toolBoxEntity.name)
|
|
bundle.putParcelable(ToolBoxEntity.TAG, toolBoxEntity)
|
|
bundle.putBoolean(WebFragment.KEY_ISCOLLECTIONTOOLS, isCollectionTools)
|
|
return getTargetIntent(
|
|
context,
|
|
WebActivity::class.java,
|
|
WebFragment::class.java, bundle
|
|
)
|
|
}
|
|
|
|
// 获取微信绑定页
|
|
@JvmStatic
|
|
fun getBindWechatIntent(context: Context?): Intent {
|
|
val url: String = if (EnvHelper.isDevEnv) {
|
|
Constants.WECHAT_BIND_ADDRESS_DEV
|
|
} else {
|
|
Constants.WECHAT_BIND_ADDRESS
|
|
}
|
|
val bundle = Bundle()
|
|
bundle.putString(EntranceConsts.KEY_URL, url)
|
|
bundle.putBoolean(WebFragment.KEY_IS_BIND_WECHAT, true)
|
|
bundle.putBoolean(WebFragment.KEY_LEAVE_WEB_PAGE_TO_HANDLE_BACK_PRESSED, true)
|
|
return getTargetIntent(
|
|
context,
|
|
WebActivity::class.java,
|
|
WebFragment::class.java, bundle
|
|
)
|
|
}
|
|
|
|
// 获取游戏动态详情页
|
|
@JvmStatic
|
|
fun getIntentByNews(
|
|
context: Context?,
|
|
concernEntity: ConcernEntity,
|
|
entrance: String?
|
|
): Intent {
|
|
return getIntentByNews(context, concernEntity.link, concernEntity.getGameName(), concernEntity.id, entrance)
|
|
}
|
|
|
|
// 获取游戏动态详情页
|
|
@JvmStatic
|
|
fun getIntentByNews(
|
|
context: Context?,
|
|
concernLink: String?,
|
|
concernGameName: String,
|
|
concernId: String?,
|
|
entrance: String?
|
|
): Intent {
|
|
val bundle = Bundle()
|
|
bundle.putString(EntranceConsts.KEY_URL, concernLink)
|
|
bundle.putString(EntranceConsts.KEY_GAMENAME, concernGameName)
|
|
bundle.putString(EntranceConsts.KEY_NEWSID, concernId)
|
|
bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance)
|
|
return getTargetIntent(
|
|
context,
|
|
WebActivity::class.java,
|
|
WebFragment::class.java, bundle
|
|
)
|
|
}
|
|
|
|
// 获取资讯详情页
|
|
@JvmStatic
|
|
fun getIntentByNews(context: Context?, newsEntity: NewsEntity, entrance: String?): Intent {
|
|
val bundle = Bundle()
|
|
bundle.putString(EntranceConsts.KEY_URL, newsEntity.link)
|
|
bundle.putString(EntranceConsts.KEY_GAMENAME, newsEntity.gameName)
|
|
bundle.putString(EntranceConsts.KEY_NEWSID, newsEntity.id)
|
|
bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance)
|
|
return getTargetIntent(
|
|
context,
|
|
WebActivity::class.java,
|
|
WebFragment::class.java, bundle
|
|
)
|
|
}
|
|
|
|
@JvmStatic
|
|
fun getIntent(context: Context?, url: String?, autoCompletionTitle: Boolean): Intent {
|
|
val bundle = Bundle()
|
|
bundle.putString(EntranceConsts.KEY_URL, url)
|
|
bundle.putBoolean(WebFragment.KEY_COMPLETION_TITLE, autoCompletionTitle)
|
|
bundle.putBoolean(WebFragment.KEY_LEAVE_WEB_PAGE_TO_HANDLE_TITLE, false)
|
|
return getWebTargetIntent(context, bundle, url)
|
|
}
|
|
|
|
@JvmStatic
|
|
@JvmOverloads
|
|
fun getIntent(
|
|
context: Context?,
|
|
url: String?,
|
|
title: String?,
|
|
autoCompletionTitle: Boolean,
|
|
isOpenNativePage: Boolean,
|
|
entrance: String? = null
|
|
): Intent {
|
|
val bundle = Bundle()
|
|
bundle.putString(EntranceConsts.KEY_URL, url)
|
|
bundle.putString(EntranceConsts.KEY_GAMENAME, title)
|
|
bundle.putBoolean(WebFragment.KEY_COMPLETION_TITLE, autoCompletionTitle)
|
|
bundle.putBoolean(WebFragment.KEY_LEAVE_WEB_PAGE_TO_HANDLE_TITLE, false)
|
|
bundle.putBoolean(WebFragment.KEY_OPEN_NATIVE_PAGE, isOpenNativePage)
|
|
if (entrance != null) bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance)
|
|
return getWebTargetIntent(context, bundle, url)
|
|
}
|
|
|
|
// 获取问答页
|
|
@JvmStatic
|
|
fun getQAIntent(
|
|
context: Context?,
|
|
url: String?,
|
|
title: String?,
|
|
isWebPageHandleBackPressed: Boolean,
|
|
qaType: Int
|
|
): Intent {
|
|
val bundle = Bundle()
|
|
bundle.putString(EntranceConsts.KEY_URL, url)
|
|
bundle.putString(EntranceConsts.KEY_GAMENAME, title)
|
|
bundle.putBoolean(WebFragment.KEY_COMPLETION_TITLE, false)
|
|
bundle.putBoolean(WebFragment.KEY_LEAVE_WEB_PAGE_TO_HANDLE_TITLE, false)
|
|
bundle.putBoolean(WebFragment.KEY_OPEN_NATIVE_PAGE, false)
|
|
bundle.putBoolean(WebFragment.KEY_LEAVE_WEB_PAGE_TO_HANDLE_BACK_PRESSED, true)
|
|
bundle.putBoolean(
|
|
WebFragment.KEY_LEAVE_WEB_PAGE_TO_HANDLE_BACK_PRESSED,
|
|
isWebPageHandleBackPressed
|
|
)
|
|
bundle.putInt(WebFragment.KEY_QA_TYPE, qaType)
|
|
return getWebTargetIntent(context, bundle, url)
|
|
}
|
|
|
|
// 获取H5游戏
|
|
@JvmStatic
|
|
fun getIntentForWebGame(
|
|
context: Context?,
|
|
url: String?,
|
|
gameName: String?,
|
|
interveneBackpress: Boolean,
|
|
closeButton: String?
|
|
): Intent {
|
|
val bundle = Bundle()
|
|
bundle.putString(EntranceConsts.KEY_URL, url)
|
|
bundle.putString(WebFragment.KEY_GAME_NAME, gameName)
|
|
bundle.putBoolean(WebFragment.KEY_LEAVE_WEB_PAGE_TO_HANDLE_TITLE, true)
|
|
bundle.putString(WebFragment.KEY_CLOSE_BUTTON, closeButton)
|
|
if (interveneBackpress) {
|
|
bundle.putBoolean(WebFragment.KEY_REQUIRE_BACK_CONFIRMATION, true)
|
|
bundle.putString(WebFragment.KEY_BACK_CONFIRMATION_CONTENT, "退出后将不保存当前游戏进度,确定退出吗?")
|
|
}
|
|
return getWebTargetIntent(context, bundle, url)
|
|
}
|
|
|
|
private fun getWebTargetIntent(context: Context?, bundle: Bundle, url: String?): Intent {
|
|
val cls: Class<out ToolBarActivity?> = if (url?.contains("android_page_type=singleton") == true) {
|
|
SingletonWebActivity::class.java
|
|
} else {
|
|
WebActivity::class.java
|
|
}
|
|
if (url?.contains("leave_web_page_handle_back_pressed=true") == true) {
|
|
bundle.putBoolean(WebFragment.KEY_LEAVE_WEB_PAGE_TO_HANDLE_BACK_PRESSED, true)
|
|
}
|
|
val intent = Intent(context, cls)
|
|
intent.putExtra(NORMAL_FRAGMENT_NAME, WebFragment::class.java.canonicalName)
|
|
intent.putExtra(NORMAL_FRAGMENT_BUNDLE, bundle)
|
|
return intent
|
|
}
|
|
}
|
|
} |