diff --git a/app/src/main/java/com/gh/common/provider/DownloadButtonClickedProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DownloadButtonClickedProviderImpl.kt index 3839f56b87..ad19ef127e 100644 --- a/app/src/main/java/com/gh/common/provider/DownloadButtonClickedProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/DownloadButtonClickedProviderImpl.kt @@ -19,7 +19,7 @@ class DownloadButtonClickedProviderImpl : IDownloadButtonClickedProvider { override fun onClicked(downloadButton: DownloadButton) { var gameId = "" var gameName = "" - var gameType = "" + var gameCategory = "" var gameTypeInChinese = "" var downloadStatus = "" var downloadStatusInChinese = "" @@ -35,7 +35,7 @@ class DownloadButtonClickedProviderImpl : IDownloadButtonClickedProvider { is GameEntity -> { gameId = boundedObject.id gameName = boundedObject.name ?: "" - gameType = boundedObject.category ?: "" + gameCategory = boundedObject.category ?: "" downloadStatus = if (boundedObject.isVGame()) { "畅玩" } else if (boundedObject.downloadStatus == "demo") { @@ -62,7 +62,7 @@ class DownloadButtonClickedProviderImpl : IDownloadButtonClickedProvider { is DownloadEntity -> { gameId = boundedObject.gameId gameName = boundedObject.name ?: "" - gameType = boundedObject.getGameType() + gameCategory = boundedObject.getGameCategory() downloadStatus = if (boundedObject.isVGame()) "畅玩" else "下载" packageName = boundedObject.packageName } @@ -73,15 +73,15 @@ class DownloadButtonClickedProviderImpl : IDownloadButtonClickedProvider { || downloadButton.text.contains("启动")) { // boundedObject 里找不到游戏类型时,尝试从已安装列表中获取 - if (gameType.isEmpty() && packageName.isNotEmpty()) { - gameType = PackageRepository.gameInstalled.find { it.packageName == packageName }?.category ?: "" + if (gameCategory.isEmpty() && packageName.isNotEmpty()) { + gameCategory = PackageRepository.gameInstalled.find { it.packageName == packageName }?.category ?: "" } NewFlatLogUtils.logGameLaunchButtonClicked( gameId = gameId, gameName = gameName, location = downloadButton.getWidgetBusinessName(), - gameCategory = gameType, + gameCategory = gameCategory, downloadStatus = downloadStatus ) } diff --git a/app/src/main/java/com/gh/common/util/DownloadObserver.kt b/app/src/main/java/com/gh/common/util/DownloadObserver.kt index 54064e6ab9..7e22203299 100644 --- a/app/src/main/java/com/gh/common/util/DownloadObserver.kt +++ b/app/src/main/java/com/gh/common/util/DownloadObserver.kt @@ -16,7 +16,6 @@ import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.entity.SimpleGameEntity import com.gh.gamecenter.common.entity.SuggestType import com.gh.gamecenter.common.eventbus.EBShowDialog -import com.gh.gamecenter.common.retrofit.Response import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.* import com.gh.gamecenter.eventbus.EBDownloadStatus @@ -24,18 +23,12 @@ import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.entity.SimulatorEntity import com.gh.gamecenter.feature.utils.PlatformUtils import com.gh.gamecenter.help.HelpAndFeedbackBridge -import com.gh.gamecenter.retrofit.RetrofitManager import com.gh.vspace.VHelper import com.halo.assistant.HaloApp import com.lightgame.download.* import com.lightgame.utils.AppManager import com.lightgame.utils.Utils -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.schedulers.Schedulers -import okhttp3.MediaType -import okhttp3.RequestBody import org.greenrobot.eventbus.EventBus -import org.json.JSONObject object DownloadObserver { @@ -392,7 +385,7 @@ object DownloadObserver { "DownloadProcessFinish", "game_id", downloadEntity.gameId, "game_name", downloadEntity.meta[Constants.GAME_NAME] ?: "", - "game_type", downloadEntity.meta[Constants.GAME_TYPE] ?: "", + "game_type", downloadEntity.meta[Constants.GAME_CATEGORY] ?: "", "game_schema_type", if (downloadEntity.getMetaExtra(VHelper.KEY_BIT) == "32") "32位" else "64位", "page_name", getCurrentPageEntity().pageName, "page_id", getCurrentPageEntity().pageId, diff --git a/app/src/main/java/com/gh/common/util/RealNameHelper.kt b/app/src/main/java/com/gh/common/util/RealNameHelper.kt index 1c38889a9b..92a609ee5e 100644 --- a/app/src/main/java/com/gh/common/util/RealNameHelper.kt +++ b/app/src/main/java/com/gh/common/util/RealNameHelper.kt @@ -66,7 +66,7 @@ object RealNameHelper { "game_name", downloadEntity.name ?: "", "game_type", - downloadEntity.meta[Constants.GAME_TYPE] ?: "" + downloadEntity.meta[Constants.GAME_CATEGORY] ?: "" ) val contentText = if (downloadEntity.status == DownloadStatus.done) { diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index 4a4e46d3c5..2aa7083532 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -284,6 +284,7 @@ public class DownloadManager implements DownloadStatusListener { String path; String downloadId = PackageInstaller.createDownloadId(gameEntity.getName()); + String gameCategory = gameEntity.getCategory(); if (SimulatorGameManager.isSimulatorGame(gameEntity)) { path = SimulatorGameManager.getPathByType(gameEntity.getSimulatorType()) + "/" + gameEntity.getName() + "." + apkEntity.getFormat(); @@ -323,10 +324,10 @@ public class DownloadManager implements DownloadStatusListener { ExtensionsKt.addMetaExtra(downloadEntity, Constants.GAME_ICON_SUBSCRIPT, gameEntity.getIconSubscript()); ExtensionsKt.addMetaExtra(downloadEntity, Constants.IS_PLATFORM_RECOMMEND, apkEntity.getRecommend() != null ? "true" : "false"); ExtensionsKt.addMetaExtra(downloadEntity, Constants.GAME_NAME, gameEntity.getName()); - ExtensionsKt.addMetaExtra(downloadEntity, Constants.GAME_TYPE, gameEntity.getCategoryChinese()); + ExtensionsKt.addMetaExtra(downloadEntity, Constants.GAME_CATEGORY, gameEntity.getCategoryChinese()); ExtensionsKt.addMetaExtra(downloadEntity, Constants.AD_ICON_ACTIVE, String.valueOf(gameEntity.getAdIconActive())); ExtensionsKt.addMetaExtra(downloadEntity, Constants.IS_AD_DATA, String.valueOf(gameEntity.isAdData())); - ExtensionsKt.putGameType(downloadEntity, gameEntity.getGameType()); + ExtensionsKt.putGameCategory(downloadEntity, gameCategory != null ? gameCategory : ""); if (gameEntity.getIconFloat() != null) { ExtensionsKt.addMetaExtra(downloadEntity, Constants.GAME_ICON_FLOAT_TOP_TEXT, gameEntity.getIconFloat().getUpperLeftText()); ExtensionsKt.addMetaExtra(downloadEntity, Constants.GAME_ICON_FLOAT_TOP_COLOR, gameEntity.getIconFloat().getUpperLeftColor()); diff --git a/app/src/main/java/com/gh/gamecenter/download/UpdatableGameViewModel.kt b/app/src/main/java/com/gh/gamecenter/download/UpdatableGameViewModel.kt index aef843d35c..1788cb36d1 100644 --- a/app/src/main/java/com/gh/gamecenter/download/UpdatableGameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/download/UpdatableGameViewModel.kt @@ -592,7 +592,7 @@ class UpdatableGameViewModel( downloadEntity.addMetaExtra(Constants.DOWNLOAD_ID, downloadId) downloadEntity.addMetaExtra(Constants.APK_MD5, update.md5) downloadEntity.addMetaExtra(Constants.GAME_NAME, update.name) - downloadEntity.addMetaExtra(Constants.GAME_TYPE, update.categoryChinese) + downloadEntity.addMetaExtra(Constants.GAME_CATEGORY, update.categoryChinese) if (update.iconFloat != null) { downloadEntity.addMetaExtra(Constants.GAME_ICON_FLOAT_TOP_TEXT, update.iconFloat?.upperLeftText) downloadEntity.addMetaExtra(Constants.GAME_ICON_FLOAT_TOP_COLOR, update.iconFloat?.upperLeftColor) diff --git a/app/src/main/java/com/gh/vspace/VHelper.kt b/app/src/main/java/com/gh/vspace/VHelper.kt index df60bb6e00..032f7b99a6 100644 --- a/app/src/main/java/com/gh/vspace/VHelper.kt +++ b/app/src/main/java/com/gh/vspace/VHelper.kt @@ -662,7 +662,7 @@ object VHelper { context, downloadEntity.gameId, downloadEntity.name, - downloadEntity.getMetaExtra(Constants.GAME_TYPE), + downloadEntity.getMetaExtra(Constants.GAME_CATEGORY), downloadEntity.getMetaExtra(KEY_BIT) ) ) return @@ -894,10 +894,20 @@ object VHelper { * 获取实体 (虽然实体是 DownloadEntity 其实就是游戏实体) * 优先从下载管理里获取(根据 gameId 获取) * 下载管理不存在时从畅玩游戏数据库的里获取 + * 根据 gameId 找不到的时候,回落到用 packageName 在 DownloadManager 里再找匹配的且是畅玩的 */ private fun getVDownloadEntity(gameId: String, packageName: String): DownloadEntity? { - return DownloadManager.getInstance().getDownloadEntitySnapshot("", gameId, true) + var matchedEntity = DownloadManager.getInstance().getDownloadEntitySnapshot("", gameId, true) ?: getVDownloadEntitySnapshot(gameId = gameId, packageName = packageName) + + if (matchedEntity == null) { + val packageNameMatchedEntity = DownloadManager.getInstance().getDownloadEntitySnapshotByPackageName(packageName) + if (packageNameMatchedEntity?.isVGame() == true) { + matchedEntity = packageNameMatchedEntity + } + } + + return matchedEntity } private fun insertInstalledGameToProvider(downloadEntity: DownloadEntity, fromRetry: Boolean = false) { @@ -939,7 +949,7 @@ object VHelper { downloadEntity.packageName, downloadEntity.gameId, downloadEntity.name, - downloadEntity.getMetaExtra(Constants.GAME_TYPE), + downloadEntity.getGameCategory(), downloadEntity.getMetaExtra(KEY_BIT), location ) @@ -1045,7 +1055,7 @@ object VHelper { } try { - logLaunch(gameId, gameName, downloadEntity?.getGameType() ?: "") + logLaunch(gameId, gameName, downloadEntity?.getGameCategory() ?: "", packageName) if (showLoading) { val intent = mDelegateManager.getStartGameIntent( @@ -1085,11 +1095,24 @@ object VHelper { /** * 记录启动事件 */ - private fun logLaunch(gameId: String, gameName: String, gameCategory: String) { + private fun logLaunch(gameId: String, + gameName: String, + gameCategory: String, + packageName: String) { + + val downloadEntity = getVDownloadEntity(gameId = "", packageName = packageName) + + // boundedObject 里找不到游戏类型时,尝试从已安装列表中获取 + val notNullGameCategory = if (gameCategory.isEmpty() && packageName.isNotEmpty()) { + PackageRepository.gameInstalled.find { it.packageName == packageName }?.category ?: "" + } else { + downloadEntity?.getGameCategory() ?: "" + } + NewFlatLogUtils.logGameLaunch( gameId = gameId, gameName = gameName, - gameCategory = gameCategory, + gameCategory = notNullGameCategory, downloadStatus = "畅玩" ) } @@ -1104,11 +1127,18 @@ object VHelper { location: String) { val downloadEntity = getVDownloadEntity(gameId = "", packageName = packageName) + // boundedObject 里找不到游戏类型时,尝试从已安装列表中获取 + val notNullGameCategory = if (gameCategory.isNullOrEmpty() && packageName.isNotEmpty()) { + PackageRepository.gameInstalled.find { it.packageName == packageName }?.category ?: "" + } else { + downloadEntity?.getGameCategory() ?: "" + } + NewFlatLogUtils.logGameLaunchButtonClicked( gameId = gameId ?: downloadEntity?.gameId ?: "", gameName = gameName ?: downloadEntity?.name ?: "", location = location, - gameCategory = gameCategory ?: downloadEntity?.getGameType() ?: "", + gameCategory = notNullGameCategory, downloadStatus = "畅玩" ) } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java b/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java index ef3b16425c..554909cfd0 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java @@ -80,7 +80,7 @@ public class Constants { public static final String SMOOTH_GAME = "smooth_game"; // 畅玩类型的游戏 public static final String VSPACE_32_DOWNLOAD_ONLY = "vspace_32_download_only"; // 仅下载32位畅玩助手,不跳转安装 public static final String GAME_NAME = "game_name"; - public static final String GAME_TYPE = "game_type"; + public static final String GAME_CATEGORY = "game_category"; public static final String SIMULATOR_DOWNLOAD_START_TIME = "simulator_download_start_time"; public static final String LAST_GHZS_UPDATE_FILE_SIZE = "last_ghzs_update_file_size"; diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt index fe5efc9afd..f3b6d4949d 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt @@ -1071,15 +1071,15 @@ fun DownloadEntity.isVGame(): Boolean { /** * 获取游戏类型 e.g.: local, online 等 */ -fun DownloadEntity.getGameType(): String { - return getMetaExtra(Constants.GAME_TYPE) +fun DownloadEntity.getGameCategory(): String { + return getMetaExtra(Constants.GAME_CATEGORY) } /** * 添加游戏类型 e.g.: 游戏类型 */ -fun DownloadEntity.putGameType(gameType: String) { - addMetaExtra(Constants.GAME_TYPE, gameType) +fun DownloadEntity.putGameCategory(gameCategory: String) { + addMetaExtra(Constants.GAME_CATEGORY, gameCategory) } /**