diff --git a/app/src/main/java/com/gh/common/databind/BindingAdapters.java b/app/src/main/java/com/gh/common/databind/BindingAdapters.java
index bc8bd6c4a2..e15af196f4 100644
--- a/app/src/main/java/com/gh/common/databind/BindingAdapters.java
+++ b/app/src/main/java/com/gh/common/databind/BindingAdapters.java
@@ -428,15 +428,16 @@ public class BindingAdapters {
case PLUGIN:
if (gameEntity.getApk().size() == 1) {
ApkEntity apk = gameEntity.getApk().get(0);
- DownloadDialogHelper.findAvailableDialogAndShow(v.getContext(), gameEntity, apk,
- () -> {
- CertificationDialog.showCertificationDialog(v.getContext(), gameEntity, () -> {
- DialogUtils.showVersionNumberDialog(v.getContext(), gameEntity, () -> {
- DialogUtils.checkDownload(v.getContext(), apk.getSize(),
- isSubscribe -> download(progressBar, gameEntity, traceEvent, isSubscribe, entrance, location));
- });
+ DownloadDialogHelper.findAvailableDialogAndShow(v.getContext(), gameEntity, apk, () -> {
+ CertificationDialog.showCertificationDialog(v.getContext(), gameEntity, () -> {
+ DialogUtils.showVersionNumberDialog(v.getContext(), gameEntity, () -> {
+ DialogUtils.showOverseaDownloadDialog(v.getContext(), gameEntity, () -> {
+ DialogUtils.checkDownload(v.getContext(), apk.getSize(),
+ isSubscribe -> download(progressBar, gameEntity, traceEvent, isSubscribe, entrance, location));
});
});
+ });
+ });
} else {
CertificationDialog.showCertificationDialog(v.getContext(), gameEntity, () -> {
DialogUtils.showVersionNumberDialog(v.getContext(), gameEntity, () -> {
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 831e2053ba..87c0240f93 100644
--- a/app/src/main/java/com/gh/common/util/DialogUtils.java
+++ b/app/src/main/java/com/gh/common/util/DialogUtils.java
@@ -29,6 +29,12 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.gh.common.AppExecutor;
import com.gh.common.constant.Config;
@@ -42,6 +48,7 @@ import com.gh.gamecenter.R;
import com.gh.gamecenter.SuggestionActivity;
import com.gh.gamecenter.WebActivity;
import com.gh.gamecenter.adapter.viewholder.PrivacyPolicyItemViewHolder;
+import com.gh.gamecenter.databinding.DialogOverseaConfirmationBinding;
import com.gh.gamecenter.databinding.ImprintContentItemBinding;
import com.gh.gamecenter.databinding.PrivacyItemBinding;
import com.gh.gamecenter.entity.ApkEntity;
@@ -61,12 +68,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
-import androidx.core.content.ContextCompat;
-import androidx.databinding.DataBindingUtil;
-import androidx.recyclerview.widget.RecyclerView;
-
public class DialogUtils {
public static Dialog showWaitDialog(Context context, String msg) {
@@ -1293,6 +1294,45 @@ public class DialogUtils {
}
}
+ // 海外下载地址弹窗
+ public static void showOverseaDownloadDialog(Context context, GameEntity gameEntity, @NonNull ConfirmListener listener) {
+ context = checkDialogContext(context);
+
+ if (gameEntity.getOverseasAddressDialog() == null
+ || gameEntity.getApk().size() == 0
+ || !gameEntity.getOverseasAddressDialog().isEnable()) {
+ listener.onConfirm();
+ } else {
+ final Dialog dialog = new Dialog(context, R.style.GhAlertDialog);
+
+ DialogOverseaConfirmationBinding binding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.dialog_oversea_confirmation, null, false);
+
+ View contentView = binding.getRoot();
+
+ binding.setGame(gameEntity);
+ binding.urlTv.setText(gameEntity.getOverseasAddressDialog().getLink());
+ binding.closeIv.setOnClickListener(v -> dialog.dismiss());
+ binding.downloadBtn.setText("下载(" + gameEntity.getApk().get(0).getSize() + ")");
+ binding.downloadBtn.setOnClickListener(v -> {
+ listener.onConfirm();
+ dialog.dismiss();
+ });
+
+ if ("show&download".equals(gameEntity.getOverseasAddressDialog().getStatus())) {
+ gameEntity.getApk().get(0).setUrl(gameEntity.getOverseasAddressDialog().getLink());
+ }
+
+ Window window = dialog.getWindow();
+ if (window != null) {
+ window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ }
+
+ dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ dialog.setContentView(contentView);
+ dialog.show();
+ }
+ }
+
public static void showImprintDialog(Context context, GameEntity gameEntity, String titleName) {
context = checkDialogContext(context);
Dialog dialog = new Dialog(context, R.style.full_dialog);
diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java
index 7230203598..9fc4983c19 100644
--- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java
+++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java
@@ -534,8 +534,10 @@ public class DownloadItemUtils {
// 先弹下载弹窗(如果需要的话)
DownloadDialogHelper.findAvailableDialogAndShow(context, gameEntity, apk, () -> {
CertificationDialog.showCertificationDialog(context, gameEntity, () -> {
- DialogUtils.checkDownload(context, apk.getSize(),
- isSubscribe -> download(context, gameEntity, downloadBtn, entrance, location, isSubscribe, traceEvent));
+ DialogUtils.showOverseaDownloadDialog(context, gameEntity, () -> {
+ DialogUtils.checkDownload(context, apk.getSize(),
+ isSubscribe -> download(context, gameEntity, downloadBtn, entrance, location, isSubscribe, traceEvent));
+ });
});
});
@@ -544,8 +546,10 @@ public class DownloadItemUtils {
DownloadDialogHelper.findAvailableDialogAndShow(context, gameEntity, apk, () -> {
CertificationDialog.showCertificationDialog(context, gameEntity, () -> {
DialogUtils.showVersionNumberDialog(context, gameEntity, () -> {
- DialogUtils.checkDownload(context, apk.getSize(),
- isSubscribe -> download(context, gameEntity, downloadBtn, entrance, location, isSubscribe, traceEvent));
+ DialogUtils.showOverseaDownloadDialog(context, gameEntity, () -> {
+ DialogUtils.checkDownload(context, apk.getSize(),
+ isSubscribe -> download(context, gameEntity, downloadBtn, entrance, location, isSubscribe, traceEvent));
+ });
});
});
});
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java
index 6f8f350ee9..03735d5548 100644
--- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java
+++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java
@@ -165,7 +165,9 @@ public class DetailViewHolder {
() -> {
CertificationDialog.showCertificationDialog(mViewHolder.context, mGameEntity, () -> {
DialogUtils.showVersionNumberDialog(mViewHolder.context, mGameEntity, () -> {
- DialogUtils.checkDownload(mViewHolder.context, apk.getSize(), this::download);
+ DialogUtils.showOverseaDownloadDialog(mViewHolder.context, mGameEntity, () -> {
+ DialogUtils.checkDownload(mViewHolder.context, apk.getSize(), this::download);
+ });
});
});
});
diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt
index 6699ebe01b..c723e16cfa 100644
--- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt
+++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt
@@ -208,6 +208,8 @@ data class GameEntity(
var zone: ZoneEntity = ZoneEntity(),
@SerializedName("comment_description")
var commentDescription: String = "",
+ @SerializedName("overseas_address_dialog")
+ var overseasAddressDialog: OverseasAddressDialog? = null,
// 本地字段,使用镜像信息
var useMirrorInfo: Boolean = false,
@@ -517,6 +519,13 @@ data class GameEntity(
}
}
+ @Parcelize
+ data class OverseasAddressDialog(var status: String? = "", var link: String? = "") : Parcelable {
+ fun isEnable() : Boolean {
+ return status == "show" || status == "show&download"
+ }
+ }
+
companion object {
const val TAG: String = "GameEntity"
}
diff --git a/app/src/main/res/drawable-hdpi/ic_close_oversea.png b/app/src/main/res/drawable-hdpi/ic_close_oversea.png
new file mode 100644
index 0000000000..f3dceb9c58
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_close_oversea.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_close_oversea.png b/app/src/main/res/drawable-xhdpi/ic_close_oversea.png
new file mode 100644
index 0000000000..16d8f32fac
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_close_oversea.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_close_oversea.png b/app/src/main/res/drawable-xxhdpi/ic_close_oversea.png
new file mode 100644
index 0000000000..ba9515dc60
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_close_oversea.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_close_oversea.png b/app/src/main/res/drawable-xxxhdpi/ic_close_oversea.png
new file mode 100644
index 0000000000..1049fcbad3
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_close_oversea.png differ
diff --git a/app/src/main/res/layout/dialog_oversea_confirmation.xml b/app/src/main/res/layout/dialog_oversea_confirmation.xml
new file mode 100644
index 0000000000..fd91d47cec
--- /dev/null
+++ b/app/src/main/res/layout/dialog_oversea_confirmation.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4ee3f62e67..26450db146 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -199,6 +199,7 @@
正在为您更新,请耐心等待
0K/s
0.0%
+ %s下载地址:
取消
提示标题
提示内容
@@ -694,6 +695,7 @@
将已安装游戏标记为玩过的游戏
https://v.douyin.com/C9UHr6/
你有%1$d]]>款预约的游戏上线啦
+ 此游戏下载资源由第三方提供。若该资源侵犯了您的合法权益或违反了当地法规,请点击页面右上角-版权申诉,按指引发起申诉,我们会尽快联系您并解决。
该游戏暂时仅提供试玩版本。试玩版资源来自第三方网站,可能存在bug或兼容性问题。敬请留意后续相关消息。
该游戏暂时仅提供试玩版本。试玩版可能存在bug或兼容性问题。敬请留意后续相关消息。
游戏停服更新维护中,为避免情绪化内容对游戏评分带来的影响,因此开启停服保护功能。在停服保护状态期间,所新增及修改发布的评分将不计入总分,所评分评论内容在展示上也会有文字提示告知其他玩家。\n\n感谢您的配合及谅解,祝您游戏愉快!\n\n光环助手会持续关注产品建议及反馈,如您在使用过程中有任何问题,欢迎向我们反馈。