From 5f17f5abb7b0920c1e2e893d1afcf146700329df Mon Sep 17 00:00:00 2001 From: yangfei Date: Fri, 22 Mar 2024 18:06:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=2032=E4=BD=8D=E4=BA=91=E5=AD=98=E6=A1=A3?= =?UTF-8?q?=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/gamecenter/SkipActivity.java | 5 ++ .../main/java/com/gh/vspace/VArchiveHelper.kt | 57 +++++++++++++++---- app/src/main/java/com/gh/vspace/VHelper.kt | 40 ++++++++----- .../common/constant/EntranceConsts.java | 3 + vasdk | 2 +- vspace-bridge | 2 +- 6 files changed, 81 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index b979979e83..a0978f35e4 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -21,6 +21,7 @@ import static com.gh.gamecenter.common.constant.EntranceConsts.HOST_QQ_GAME; import static com.gh.gamecenter.common.constant.EntranceConsts.HOST_QQ_GROUP; import static com.gh.gamecenter.common.constant.EntranceConsts.HOST_QQ_QUN; import static com.gh.gamecenter.common.constant.EntranceConsts.HOST_QUESTION; +import static com.gh.gamecenter.common.constant.EntranceConsts.HOST_RESTART_GAME; import static com.gh.gamecenter.common.constant.EntranceConsts.HOST_SUGGESTION; import static com.gh.gamecenter.common.constant.EntranceConsts.HOST_TOOLBOX; import static com.gh.gamecenter.common.constant.EntranceConsts.HOST_UPLOAD_VIDEO; @@ -441,6 +442,10 @@ public class SkipActivity extends BaseActivity { return; } break; + case HOST_RESTART_GAME: + String restartGamePkg = uri.getQueryParameter(EntranceConsts.KEY_GAME_PKG); + VHelper.launch(this, restartGamePkg, false, true); + break; default: EntranceUtils.jumpActivity(this, new Bundle()); // 跳转至首页 return; diff --git a/app/src/main/java/com/gh/vspace/VArchiveHelper.kt b/app/src/main/java/com/gh/vspace/VArchiveHelper.kt index 9e7450cdb1..5711c11e2e 100644 --- a/app/src/main/java/com/gh/vspace/VArchiveHelper.kt +++ b/app/src/main/java/com/gh/vspace/VArchiveHelper.kt @@ -3,6 +3,7 @@ package com.gh.vspace import android.annotation.SuppressLint import android.content.Context import android.database.sqlite.SQLiteDiskIOException +import android.os.* import androidx.annotation.WorkerThread import com.blankj.utilcode.util.LogUtils import com.gh.download.simple.DownloadMessageHandler @@ -23,6 +24,7 @@ import com.lg.download.DownloadStatus import com.lg.download.httpclient.DefaultHttpClient import com.lg.ndownload.DownloadConfigBuilder import com.lg.vspace.VirtualAppManager +import com.lg.vspace.archive.data.Const import com.lg.vspace.archive.ui.ArchiveManager import com.lg.vspace.archive.ui.interfaces.ArchiveProgressPageListener import com.lightgame.utils.Utils @@ -46,6 +48,23 @@ object VArchiveHelper { // 本地存档存放的位置 val archivePath by lazy { HaloApp.getInstance().filesDir.absolutePath + File.separator } + private var messenger: Messenger? = null + private val handler = object : Handler(Looper.getMainLooper()) { + override fun handleMessage(msg: Message) { + when (msg.what) { + Const.MSG_USE_ARCHIVE -> { + msg.data?.let { + onApplyGameArchiveFinished( + packageName = it.getString(Const.EXTRA_PACKAGE_NAME, ""), + isSuccess = it.getBoolean(Const.EXTRA_IS_SUCCESS, false) + ) + } + } + } + messenger = null + } + } + fun init() { DownloadMessageHandler.registerGlobalStatusChangedListener { simpleDownloadEntity, downloadStatus -> when (downloadStatus) { @@ -198,19 +217,35 @@ object VArchiveHelper { val intent = VirtualAppManager.getUseArchiveIntent(context, packageName, config, archiveFile) context.startActivity(intent) } else { - ArchiveManager.useArchive(context, packageName, config, archiveFile, - object : ArchiveProgressPageListener { - override fun onCancel() { - } + TODO() + mApplyArchiveListener = applyArchiveListener + val intent = VirtualAppManager.getUseArchiveIntent(context, packageName, config, archiveFile) + intent.setClassName( + com.lg.vspace.BuildConfig.EXT_PACKAGE_NAME, + "com.lg.vspace.addon.launcher.RemoteGuideActivity" + ) + intent.putExtra("callback", Bundle().also { + messenger = Messenger(handler) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + it.putBinder("messenger", messenger!!.binder) + } + }) + context.startActivity(intent) - override fun completed(isSuccess: Boolean) { - LogUtils.d("存档使用 completed : $isSuccess") - if (applyArchiveListener != null) { - applyArchiveListener(packageName, isSuccess) - } - } - }) +// ArchiveManager.useArchive(context, packageName,archiveFile, config, +// object : ArchiveProgressPageListener { +// override fun onCancel() { +// } +// +// override fun completed(isSuccess: Boolean) { +// LogUtils.d("存档使用 completed : $isSuccess") +// if (applyArchiveListener != null) { +// applyArchiveListener(packageName, isSuccess) +// } +// +// } +// }) } diff --git a/app/src/main/java/com/gh/vspace/VHelper.kt b/app/src/main/java/com/gh/vspace/VHelper.kt index 78545c72e5..7b875c7889 100644 --- a/app/src/main/java/com/gh/vspace/VHelper.kt +++ b/app/src/main/java/com/gh/vspace/VHelper.kt @@ -1476,26 +1476,36 @@ object VHelper { fun cleanGameData(packageName: String?) { Utils.log(LOG_TAG, "清除游戏数据 $packageName") if (packageName.isNullOrBlank()) return - val cleanGameDataClosure: () -> Unit = { - try { - val result = VirtualAppManager.get().cleanGameData(packageName) - if (result) { - updateInstalledList() + if(isLegacyInstalled(packageName)) { + val cleanGameDataClosure: () -> Unit = { + try { + val result = VirtualAppManager.get().cleanGameData(packageName) + if (result) { + updateInstalledList() + } + Utils.log(LOG_TAG, "清除游戏数据结果 -> $result") + } catch (e: Exception) { + ToastUtils.toast(e.localizedMessage ?: "") } + } + if (mDelegateManager.isConnectAidlInterface) { + cleanGameDataClosure.invoke() + } else { + connectService( + shouldCheckUpdate = false, + shouldConnectSilently = false, + callbackClosure = cleanGameDataClosure + ) + } + } else { + try { + val result = VaApp.get().appManager.cleanGameData(packageName) Utils.log(LOG_TAG, "清除游戏数据结果 -> $result") } catch (e: Exception) { - ToastUtils.toast(e.localizedMessage ?: "") + e.printStackTrace() } } - if (mDelegateManager.isConnectAidlInterface) { - cleanGameDataClosure.invoke() - } else { - connectService( - shouldCheckUpdate = false, - shouldConnectSilently = false, - callbackClosure = cleanGameDataClosure - ) - } + } /** 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 0095354d4b..130291fd34 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 @@ -82,6 +82,9 @@ public class EntranceConsts { public static final String HOST_QQ_GAME = "qgame"; public static final String HOST_HOME_GAME_COLLECTION_SQUARE = "home_game_collection_square"; public static final String HOST_ARCHIVE_LOGIN = "archive_login"; + + public static final String HOST_RESTART_GAME = "restart_game"; + public static final String KEY_DATA = "data"; public static final String KEY_MESSAGE = "message"; public static final String KEY_MESSAGE_ID = "message_id"; diff --git a/vasdk b/vasdk index 8276133521..67c7e4bf5d 160000 --- a/vasdk +++ b/vasdk @@ -1 +1 @@ -Subproject commit 82761335214e4b50bcdc525f5092eb762e281c58 +Subproject commit 67c7e4bf5d63bef7b2cf4d20d82e6747ee23696b diff --git a/vspace-bridge b/vspace-bridge index 326d3ff036..d7502f8023 160000 --- a/vspace-bridge +++ b/vspace-bridge @@ -1 +1 @@ -Subproject commit 326d3ff03636c90a26859e6d76abaff7b4d5c254 +Subproject commit d7502f8023e4b4f509446d0eb3f13edec101d267