From 06fddb7dcdaa1d164be783012af1b529ab9b3bae Mon Sep 17 00:00:00 2001 From: juntao Date: Wed, 22 Jul 2020 18:21:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=B8=B8=E6=88=8F=E7=AE=A1?= =?UTF-8?q?=E7=90=86apk=E5=8C=85=E6=8F=90=E4=BE=9B=E6=B5=B7=E5=A4=96?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=9C=B0=E5=9D=80=20https://gitlab.ghzs.com/?= =?UTF-8?q?pm/halo-app-issues/-/issues/930?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gh/common/databind/BindingAdapters.java | 15 +-- .../java/com/gh/common/util/DialogUtils.java | 52 ++++++++-- .../com/gh/common/util/DownloadItemUtils.java | 12 ++- .../adapter/viewholder/DetailViewHolder.java | 4 +- .../com/gh/gamecenter/entity/GameEntity.kt | 9 ++ .../res/drawable-hdpi/ic_close_oversea.png | Bin 0 -> 501 bytes .../res/drawable-xhdpi/ic_close_oversea.png | Bin 0 -> 564 bytes .../res/drawable-xxhdpi/ic_close_oversea.png | Bin 0 -> 751 bytes .../res/drawable-xxxhdpi/ic_close_oversea.png | Bin 0 -> 801 bytes .../layout/dialog_oversea_confirmation.xml | 97 ++++++++++++++++++ app/src/main/res/values/strings.xml | 2 + 11 files changed, 173 insertions(+), 18 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_close_oversea.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_close_oversea.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_close_oversea.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_close_oversea.png create mode 100644 app/src/main/res/layout/dialog_oversea_confirmation.xml 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 0000000000000000000000000000000000000000..f3dceb9c58b522b5ca75a5a05c6599e5c2d0972a GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~STEL88gA~qMxhWK=EZ)<_F~maf z?BxAk%#H%b()pB{8ab4nNbWf#uzsq*Dwv{aZDEa)l0wq?^E38T-v zQmTFZu?Eb7k>0N&tX8QX+s>#MsCl|dPKP`3{OxS>CSwPIXMLA+C$3&-BwXIU;qz*i z31N%t7FEwtP}yvd^ltJAr%MkSo;2y)*c!C4%l6Px72A#PJky573^vl+P1C&%919bL8ULEqf>>Cb0dE8JQ;hh<8nJYW0NlT+T!c%ks%fmN4O^5%J^_h0wE z(%!mD@ZkClUUSnnTQcuUn4}h5deSHSNQv5m=XLdW3|?n`KfuT@_v6CFh|>$A*6o?J z==_coA<-W`X`W{(ec-Z3>~o9!>l_)K=CId47BA@%->0Tm_+jB<>kVlO%rAGmEvwza z%NDVmkt4!vS&;3u;sVk|2)6k z`179UcTzXS-?P57-~AfTvd=ePnmu~KwDIp;&o#}9bWSU*`LsCbi^9RZC*;rVoLR|K oUeCmCQ}Mw0c<-IJRzg2mH@{GO$-iIo94N*-UHx3vIVCg!07K^N*Z=?k literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ba9515dc6016c8034a9ae8982b4d01c05d299d42 GIT binary patch literal 751 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315>1@i(^Ox z=iBM$y`>#Rj^DrS6)GU2Uv%1@if`z{NZxtO^ zbU5|#PKi6>pm5E^`rPf3>Bp@$?>3Hpp~~!ePv`#kx#$1fI?3R3Dut!1m*Lf=+W%#i z2M#V%esJvbo$9&gzEm#1JoDej&Hn}6FMQtfJ^W;iYQW~3ak6ZWR*RfJeV*gu&ydyY z=BrHheJy@JZ`y~KKVvvP>YZ`5Sskvu`_A!)Q#JkxGjwvaosw2;Ixl|q+P@uH-+c`} ze0g)+AVv8|-}`v|0(aF34j&J=CdwR`s2jqf%ow&)Ux~+S=}yM_Wh_xMnv)&&Ja&rK zkmdQQn6x-X@Bg#68jUg6-yS>@yFoWN#D1l2-h0^EVWZHCjr_k|6Bo5zTJVJTNyod)iDBF=OyWB=dU)dtY~tBfS8OM{ekA1grj}v+N_N(E#(+;~={J$PL>#*;m elN>jC4sajko5p(0ueS-5*gReRT-G@yGywo85k(mQ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1049fcbad3fa613133ad1820aa6bcc74f70dd776 GIT binary patch literal 801 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUVCwdCaSX{| zeLK_IkJ(V5?Jcj6sOS03rx+WAmoP~wXbP%b>~O`Ee`b4uMOLCNl&nhAG-fF3@8+_FIns z!h5e*%3dWx*6v&SI#%n1}IahT(ZmdcYj#}fgqx(rBnA~(?^|8Fm?rVXep!+e#^hmH zbSP6d(VD~Hr`MYK@119hlq+|&YMeQ^^8Mp`c;_S>s!nWA1? zEq<%e&|7nzcg}j%Bi6Gg3dHF;GORr_z1S(+^W(WZ)fU?q1<9GREE+xg7B*juYpr;$ z%+eSvW!`rU7|ITFE + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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光环助手会持续关注产品建议及反馈,如您在使用过程中有任何问题,欢迎向我们反馈。