diff --git a/app/src/main/java/com/gh/common/provider/VHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/VHelperProviderImpl.kt index e490b1019f..1850c787f7 100644 --- a/app/src/main/java/com/gh/common/provider/VHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/VHelperProviderImpl.kt @@ -3,7 +3,8 @@ package com.gh.common.provider import android.content.Context import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IVHelperProvider +import com.gh.gamecenter.feature.entity.InstallGameEntity +import com.gh.gamecenter.feature.provider.IVHelperProvider import com.gh.vspace.VHelper @Route(path = RouteConsts.provider.vhelper, name = "VHelper暴露服务") @@ -12,6 +13,14 @@ class VHelperProviderImpl: IVHelperProvider { return VHelper.isVGameOn() } + override fun getAllInstalledVGameEntity(): ArrayList { + return VHelper.getAllInstalledVGameEntity() + } + + override fun launch(context: Context, packageName: String, ignoreGApps: Boolean, showLoading: Boolean) { + VHelper.launch(context, packageName, ignoreGApps, showLoading) + } + override fun init(context: Context?) { // Do nothing } diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index a4349ae6ff..77224952b7 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -1252,7 +1252,7 @@ public class DialogUtils { SpannableStringBuilder builder = new SpanBuilder("您也可以点击提交反馈跟我们联系").click(context, 6, 10, R.color.text_theme, true, new Function0() { @Override public Unit invoke() { - SimpleGameEntity entity = new SimpleGameEntity(gameId, gameName, ""); + SimpleGameEntity entity = new SimpleGameEntity(gameId, gameName, "", ""); HelpAndFeedbackBridge.startSuggestionActivity(finalContext, SuggestType.GAME, "notfound", "模拟器安装包解析错误", entity); dialog.dismiss(); return null; diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index 31cee86e52..4003591d47 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -1939,7 +1939,8 @@ object DirectUtils { fromRatingKey: Boolean = false, diagnosis: String = "", forceLogin: Boolean = true, - requestCode: Int? = null + requestCode: Int? = null, + isSmoothGame: Boolean = false ) { val intent = HelpAndFeedbackBridge.getIntent( context, @@ -1952,7 +1953,8 @@ object DirectUtils { qaContentId, fromRatingKey, diagnosis, - forceLogin + forceLogin, + isSmoothGame ) if (requestCode != null) { (context as Activity).startActivityForResult(intent, requestCode) diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index f7f09af1e1..cb4c66ce7f 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -153,9 +153,8 @@ public class SkipActivity extends BaseActivity { case HOST_SUGGESTION: if (!TextUtils.isEmpty(qaId)) { DirectUtils.directToQa(this, qaTitle, qaId); - } else if ("vgame".equals(suggestionType)) { - DirectUtils.directToFeedback(this, content, isQaFeedback, qaContentId, false, true, EntranceConsts.ENTRANCE_BROWSER); } else { + // 插件反馈跳转到意见反馈分类页 DirectUtils.directToFeedback(this, content, isQaFeedback, qaContentId, true, false, EntranceConsts.ENTRANCE_BROWSER); } break; @@ -226,7 +225,7 @@ public class SkipActivity extends BaseActivity { String tagActivityName = uri.getQueryParameter("tagActivityName"); VideoLinkEntity linkEntity = new VideoLinkEntity(title, categoryId, link, tagActivityId, tagActivityName); - SimpleGameEntity simpleGameEntity = new SimpleGameEntity(gameId != null ? gameId : "", gameName != null ? gameName : "", ""); + SimpleGameEntity simpleGameEntity = new SimpleGameEntity(gameId != null ? gameId : "", gameName != null ? gameName : "", "", ""); Bundle nextToBundle = VideoManagerActivity.getVideoManagerBundle(linkEntity, simpleGameEntity, EntranceConsts.ENTRANCE_BROWSER, ""); CheckLoginUtils.checkLogin(this, nextToBundle, true, EntranceConsts.ENTRANCE_BROWSER, () -> DirectUtils.directToVideoManager(SkipActivity.this, linkEntity, simpleGameEntity, EntranceConsts.ENTRANCE_BROWSER, "浏览器")); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java index 9a49d5b883..9f2eefe382 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java @@ -162,7 +162,7 @@ public class LibaoDetailAdapter extends BaseRecyclerAdapter { .click(mContext, 7, 11, R.color.text_theme, false, () -> { HelpAndFeedbackBridge.startSuggestionActivity(mContext, SuggestType.GAME, "libao", - StringUtils.buildString(mLibaoEntity.getName(), "有问题:"), new SimpleGameEntity(mLibaoEntity.getGame().getId(), mLibaoEntity.getGame().getName(), mLibaoEntity.getGame().getIcon())); + StringUtils.buildString(mLibaoEntity.getName(), "有问题:"), new SimpleGameEntity(mLibaoEntity.getGame().getId(), mLibaoEntity.getGame().getName(), mLibaoEntity.getGame().getIcon(), "")); return null; }) .build(); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt index cab08619de..462e7778a1 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt @@ -7,12 +7,14 @@ import android.view.ViewGroup import android.widget.LinearLayout import android.widget.TextView import androidx.appcompat.app.AppCompatActivity +import androidx.core.os.bundleOf import androidx.core.view.children import com.gh.common.util.DirectUtils import com.gh.gamecenter.R import com.gh.gamecenter.WebActivity import com.gh.gamecenter.common.base.fragment.BaseDraggableDialogFragment import com.gh.gamecenter.common.constant.Constants +import com.gh.gamecenter.common.entity.SimpleGameEntity import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.databinding.DialogGameDetailMoreBinding @@ -90,7 +92,15 @@ class GameDetailMoreDialog : BaseDraggableDialogFragment() { MtaHelper.onEvent("内容分享", "复制链接", mGameEntity?.name) } binding.feedbackTv.setOnClickListener { - DirectUtils.directToHelpAndFeedback(requireContext()) + val simpleGameEntity = SimpleGameEntity( + id = mGameEntity?.id ?: "", + name = mGameEntity?.name ?: "", + icon = mGameEntity?.icon ?: "" + ) + DirectUtils.directToHelpAndFeedback( + requireContext(), + bundleOf(SimpleGameEntity::class.java.simpleName to simpleGameEntity) + ) com.halo.assistant.HaloApp.put(Constants.GAME_NAME, mGameEntity?.name) MtaHelper.onEvent("游戏详情_新", "问题反馈按钮", mGameEntity?.name ?: "") } diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpAndFeedbackBridge.kt b/app/src/main/java/com/gh/gamecenter/help/HelpAndFeedbackBridge.kt index 311e61eebe..ee61238028 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpAndFeedbackBridge.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpAndFeedbackBridge.kt @@ -52,7 +52,8 @@ object HelpAndFeedbackBridge { qaContentId: String?, fromRatingKey: Boolean, diagnosis: String, - forceLogin: Boolean + forceLogin: Boolean, + isSmoothGame: Boolean ): Intent? { return mHelpAndFeedbackHelp?.getIntent( context, @@ -65,7 +66,8 @@ object HelpAndFeedbackBridge { qaContentId, fromRatingKey, diagnosis, - forceLogin + forceLogin, + isSmoothGame ) } diff --git a/app/src/main/java/com/gh/vspace/VHelper.kt b/app/src/main/java/com/gh/vspace/VHelper.kt index 76f7aa161f..f86fa3728a 100644 --- a/app/src/main/java/com/gh/vspace/VHelper.kt +++ b/app/src/main/java/com/gh/vspace/VHelper.kt @@ -37,6 +37,7 @@ import com.gh.gamecenter.entity.* import com.gh.gamecenter.eventbus.EBPackage import com.gh.gamecenter.feature.entity.ApkEntity import com.gh.gamecenter.feature.entity.GameEntity +import com.gh.gamecenter.feature.entity.InstallGameEntity import com.gh.gamecenter.manager.PackagesManager import com.gh.gamecenter.packagehelper.PackageRepository import com.gh.gamecenter.retrofit.RetrofitManager @@ -420,6 +421,15 @@ object VHelper { */ fun getAllVGameSnapshots(): ArrayList = ArrayList(mVGameSnapshotList) + fun getAllInstalledVGameEntity(): ArrayList = getAllVGameSnapshots().map { + InstallGameEntity().apply { + gameIcon = it.downloadEntity.icon + gameName = it.downloadEntity.getMetaExtra(Constants.GAME_NAME) + gameVersion = it.downloadEntity.versionName + packageName = it.packageName + } + }.toArrayList() + /** * 获取内存里的畅玩游戏快照 * diff --git a/feature/new_feedback/src/main/AndroidManifest.xml b/feature/new_feedback/src/main/AndroidManifest.xml index ccd16a71eb..cb7ec01019 100644 --- a/feature/new_feedback/src/main/AndroidManifest.xml +++ b/feature/new_feedback/src/main/AndroidManifest.xml @@ -15,7 +15,14 @@ + android:screenOrientation="portrait" + android:taskAffinity=".suggest"> + + + + + + 帮助与反馈模块 - 请详细描述你遇到的问题\\n↓↓你还可以上传截图 - 指定游戏 提交 - QQ、邮箱或手机 - 欢迎畅所欲言,光环助手会努力变得更好 - 普通反馈 - 功能收录 - 游戏加速、单机功能订制收录 - 发生闪退 - 游戏/助手自动退出或重启,点击这里反馈 - 畅玩问题 - 畅玩游戏发生例如闪退等问题,点击这里反馈 - 游戏问题 - 玩游戏过程中遇到的问题 - 收录更新 - 游戏版本太低、没有想要的游戏,点击这里提交 - 帖子投稿 版权申诉 原创或转发,我们都欢迎 如果您有版权方面的问题,请点击这里提交申诉 @@ -26,12 +10,6 @@ 367541038 正在反馈... - - 加速跳过 - 单机功能 - 替换素材 - - 问题类型*]]> 问题描述*]]> 功能需求*]]> diff --git a/module_common/src/main/java/com/gh/gamecenter/common/base/activity/ToolBarActivity.java b/module_common/src/main/java/com/gh/gamecenter/common/base/activity/ToolBarActivity.java index 85a69d8b30..0c3b7125c5 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/base/activity/ToolBarActivity.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/base/activity/ToolBarActivity.java @@ -33,7 +33,6 @@ import com.gh.gamecenter.common.base.fragment.ToolbarController; import com.gh.gamecenter.common.base.fragment.ToolbarFragment; import com.gh.gamecenter.common.utils.ImageUtils; import com.lightgame.OnTitleClickListener; -import com.lightgame.utils.Utils; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -319,7 +318,6 @@ public abstract class ToolBarActivity extends BaseActivity implements ToolbarCon protected static Intent getTargetIntent(Context context, Class cls, Class t, Bundle bundle) { Intent intent = new Intent(context, cls); intent.putExtra(NORMAL_FRAGMENT_NAME, t.getCanonicalName()); - Utils.log("SuggestionFragment", t.getCanonicalName()); intent.putExtra(NORMAL_FRAGMENT_BUNDLE, bundle); return intent; } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/entity/SimpleGameEntity.kt b/module_common/src/main/java/com/gh/gamecenter/common/entity/SimpleGameEntity.kt index d045f86327..ee5e9671f7 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/entity/SimpleGameEntity.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/entity/SimpleGameEntity.kt @@ -9,5 +9,6 @@ data class SimpleGameEntity( @SerializedName("_id") val id: String = "", val name: String = "", - val icon: String = "" + val icon: String = "", + val packageName: String = "" ) : Parcelable \ No newline at end of file diff --git a/module_common/src/main/java/com/gh/gamecenter/common/provider/IHelpAndFeedbackProvider.kt b/module_common/src/main/java/com/gh/gamecenter/common/provider/IHelpAndFeedbackProvider.kt index 3341542d3f..ac7e975a4d 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/provider/IHelpAndFeedbackProvider.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/provider/IHelpAndFeedbackProvider.kt @@ -38,7 +38,8 @@ interface IHelpAndFeedbackProvider : IProvider { qaContentId: String?, fromRatingKey: Boolean, diagnosis: String, - forceLogin: Boolean + forceLogin: Boolean, + isSmoothGame: Boolean ): Intent? fun getSuggestionCategoryIntent(context: Context, bundle: Bundle? = null): Intent? diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IVHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IVHelperProvider.kt deleted file mode 100644 index b6be1b3b41..0000000000 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IVHelperProvider.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.gh.gamecenter.core.provider - -import com.alibaba.android.arouter.facade.template.IProvider - -interface IVHelperProvider : IProvider { - fun isVGameOn(): Boolean -} \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt index 8526a50c1c..65e746a63a 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt @@ -14,6 +14,7 @@ import com.gh.gamecenter.feature.HaloApp import com.gh.gamecenter.feature.R import com.gh.gamecenter.feature.exposure.ExposureEvent import com.gh.gamecenter.feature.provider.IRegionSettingHelperProvider +import com.gh.gamecenter.feature.provider.IVHelperProvider import com.google.gson.annotations.SerializedName import com.lightgame.download.DownloadEntity import kotlinx.parcelize.IgnoredOnParcel diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/InstallGameEntity.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/InstallGameEntity.kt index 2fc4c56ae3..b2d0a25ef7 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/InstallGameEntity.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/InstallGameEntity.kt @@ -15,6 +15,8 @@ class InstallGameEntity { var gameBm: Bitmap? = null + var gameIcon: String? = null + var gamePath: String? = null var lastUpdateTime: Long = 0 diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/SuggestSelectGameAdapter.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/SuggestSelectGameAdapter.kt index 95d327e7b9..1d5e469686 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/SuggestSelectGameAdapter.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/SuggestSelectGameAdapter.kt @@ -42,7 +42,8 @@ class SuggestSelectGameAdapter( if (mPlatformRequestsId.isNotEmpty()) { installGameEntity.platformRequestsId = mPlatformRequestsId } - holder.binding.gameIcon.getIconIv().setImageBitmap(installGameEntity.gameBm) + installGameEntity.gameBm?.let { holder.binding.gameIcon.getIconIv().setImageBitmap(it) } + installGameEntity.gameIcon?.let { holder.binding.gameIcon.displayGameIcon(it, null) } holder.binding.gameIcon.getIconDecoratorIv().visibility = View.GONE holder.binding.gameName.text = installGameEntity.gameName holder.binding.gameName.setTextColor(R.color.text_primary.toColor(mContext)) diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IVHelperProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IVHelperProvider.kt new file mode 100644 index 0000000000..a42faecdd2 --- /dev/null +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IVHelperProvider.kt @@ -0,0 +1,18 @@ +package com.gh.gamecenter.feature.provider + +import android.content.Context +import com.alibaba.android.arouter.facade.template.IProvider +import com.gh.gamecenter.feature.entity.InstallGameEntity + +interface IVHelperProvider : IProvider { + fun isVGameOn(): Boolean + + fun getAllInstalledVGameEntity(): ArrayList + + fun launch( + context: Context, + packageName: String, + ignoreGApps: Boolean = false, + showLoading: Boolean = true + ) +} \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/dialog/SelectGameViewModel.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/dialog/SelectGameViewModel.kt index 2a9e569347..c2e85d714e 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/dialog/SelectGameViewModel.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/dialog/SelectGameViewModel.kt @@ -13,6 +13,7 @@ import com.gh.gamecenter.common.utils.BitmapUtils import com.gh.gamecenter.common.utils.singleToMain import com.gh.gamecenter.core.provider.IPackageUtilsProvider import com.gh.gamecenter.feature.entity.InstallGameEntity +import com.gh.gamecenter.feature.provider.IVHelperProvider import com.gh.gamecenter.feature.retrofit.RetrofitManager import io.reactivex.Observable import io.reactivex.ObservableEmitter @@ -97,6 +98,16 @@ class SelectGameViewModel(application: Application) : AndroidViewModel(applicati } } } + + val vHelperProvider = + ARouter.getInstance().build(RouteConsts.provider.vhelper).navigation() as? IVHelperProvider + if (vHelperProvider?.isVGameOn() == true) { + vHelperProvider.getAllInstalledVGameEntity().forEach { + if (!shouldThisPackageBeFiltered(it.packageName ?: "")) { + mApkList.add(it) + } + } + } emitter.onComplete() } .subscribeOn(Schedulers.io())