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 8c27a9edfa..ef608d4bcd 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -30,10 +30,12 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.core.content.ContextCompat; +import com.gh.common.dialog.TrackableDialog; import com.gh.common.view.DrawableView; import com.gh.gamecenter.AboutActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.WebActivity; +import com.gh.gamecenter.entity.TrackableEntity; import com.halo.assistant.HaloApp; import com.halo.assistant.fragment.SettingsFragment; import com.lightgame.utils.AppManager; @@ -966,6 +968,59 @@ public class DialogUtils { return dialog; } + public static Dialog showTrackableDialog(Context context, + String title, + CharSequence message, + String positive, + String negative, + final ConfirmListener cmListener, + final CancelListener clListener, + TrackableEntity trackableEntity) { + context = checkDialogContext(context); + + final TrackableDialog dialog = new TrackableDialog(context, + R.style.GhAlertDialog, + trackableEntity.getEvent(), + trackableEntity.getKey(), + trackableEntity.getCancelValue(), + trackableEntity.getKeyBackValue(), + trackableEntity.getLogShowEvent()); + + View contentView = LayoutInflater.from(context).inflate(R.layout.dialog_alert, null); + TextView contentTv = contentView.findViewById(R.id.dialog_content); + TextView titleTv = contentView.findViewById(R.id.dialog_title); + TextView negativeTv = contentView.findViewById(R.id.dialog_negative); + TextView positiveTv = contentView.findViewById(R.id.dialog_positive); + if (message.toString().contains("红包奖励")) {//将红包奖励四个字标红 + String str = message.toString().substring(0, message.toString().indexOf("红包奖励")) + "红包奖励"; + contentTv.setText(Html.fromHtml(str)); + } else { + contentTv.setText(message); + } + titleTv.setText(title); + negativeTv.setText(negative); + positiveTv.setText(positive); + + negativeTv.setOnClickListener(view -> { + if (clListener != null) { + clListener.onCancel(); + } + dialog.dismiss(); + }); + + positiveTv.setOnClickListener(view -> { + if (cmListener != null) { + cmListener.onConfirm(); + } + dialog.dismiss(); + }); + + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setContentView(contentView); + dialog.show(); + return dialog; + } + public static Dialog fixWebViewKeyboardNotWorking(Activity activity) { final Dialog dialog = new Dialog(activity, R.style.TransparentDialog); View view = new View(activity); diff --git a/app/src/main/java/com/gh/gamecenter/entity/TrackableEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/TrackableEntity.kt new file mode 100644 index 0000000000..ab5f3db610 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/TrackableEntity.kt @@ -0,0 +1,7 @@ +package com.gh.gamecenter.entity + +data class TrackableEntity(val event: String = "", + val key: String = "", + val cancelValue: String? = "", + val keyBackValue: String? = "", + val logShowEvent: Boolean = false) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt index 77e3b0b3a7..618257f2f4 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt @@ -226,22 +226,27 @@ class RatingEditActivity : ToolBarActivity() { when { errorEntity?.code == 403079 -> { - DialogUtils.showAlertDialog(this@RatingEditActivity, "提示", + MtaHelper.onEvent("游戏评论跳转", "出现弹窗", mGame.name ?: "") + DialogUtils.showTrackableDialog(this@RatingEditActivity, "提示", "检测到您评论的内容中含有反映游戏问题相关内容,可选择点击下方联系客服按钮,将问题反馈给客服,以便更优解决!", "联系客服", "继续提交", { ImManager.startChatActivity(this@RatingEditActivity , "《" + errorEntity.data?.gameName + "》- " + errorEntity.data?.content) + MtaHelper.onEvent("游戏评论跳转", "联系客服弹窗", "点击联系客服") }, { postGameComment(again = true) - }) + MtaHelper.onEvent("游戏评论跳转", "联系客服弹窗", "点击继续提交") + }, TrackableEntity(event = "游戏评论跳转", key = "联系客服弹窗")) } errorEntity?.code == 403080 -> { - DialogUtils.showAlertDialog(this@RatingEditActivity, "提示", + MtaHelper.onEvent("游戏评论跳转", "出现弹窗", mGame.name ?: "") + DialogUtils.showTrackableDialog(this@RatingEditActivity, "提示", "检测到您评论的内容中含有反映游戏问题相关内容,可选择点击下方问题反馈按钮,将问题反馈给后台客服,以便更优解决!", "问题反馈", "继续提交", { + MtaHelper.onEvent("游戏评论跳转", "意见反馈弹窗", "点击问题反馈") mBinding.mWebView.callHandler("getComment", OnReturnValue { content -> val intent = SuggestionActivity.getIntentFromRating( this@RatingEditActivity, @@ -252,8 +257,9 @@ class RatingEditActivity : ToolBarActivity() { }) }, { + MtaHelper.onEvent("游戏评论跳转", "意见反馈弹窗", "点击继续提交") postGameComment(again = true) - }) + }, TrackableEntity(event = "游戏评论跳转", key = "意见反馈弹窗")) } else -> ErrorHelper.handleError(this@RatingEditActivity, errorString) }