From 32a7f37b6a197aef14b3b1df0f5a98061bd04467 Mon Sep 17 00:00:00 2001 From: "kehaoyuan@ghzhushou.com" Date: Sat, 9 May 2020 11:48:45 +0800 Subject: [PATCH] =?UTF-8?q?20200508=E8=A1=A5=E5=85=85=E8=A7=84=E5=88=99(1,?= =?UTF-8?q?2,3)https://gitlab.ghzs.com/pm/halo-app-issues/-/issues/838?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/DetailDownloadUtils.java | 2 +- .../java/com/gh/common/util/PackageUtils.java | 1 + .../dialog/DownloadDialogItemViewHolder.kt | 8 +++++++- .../download/GameUpdateFragmentAdapter.java | 16 ++++++++++------ .../java/com/gh/gamecenter/entity/GameEntity.kt | 1 + app/src/main/res/layout/dialog_download.xml | 4 +++- 6 files changed, 23 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java index cedd9fbe47..612a31ba1e 100644 --- a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java +++ b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java @@ -84,7 +84,7 @@ public class DetailDownloadUtils { if (viewHolder.isNewsDetail) { downloadText = status; } else if (viewHolder.context.getString(R.string.pluggable).equals(status)) { - downloadText = "升级至" + (TextUtils.isEmpty(downloadAddWord) ? "" : downloadAddWord) + getDownloadSizeText(viewHolder); + downloadText = "升级" + (TextUtils.isEmpty(downloadAddWord) ? "" : "至" + downloadAddWord) + getDownloadSizeText(viewHolder); } else if (viewHolder.context.getString(R.string.launch).equals(status)) { downloadText = status + (TextUtils.isEmpty(downloadAddWord) ? "" : "-" + downloadAddWord); } else if (viewHolder.context.getString(R.string.attempt).equals(status)) { diff --git a/app/src/main/java/com/gh/common/util/PackageUtils.java b/app/src/main/java/com/gh/common/util/PackageUtils.java index 88597b9278..deee31752a 100644 --- a/app/src/main/java/com/gh/common/util/PackageUtils.java +++ b/app/src/main/java/com/gh/common/util/PackageUtils.java @@ -178,6 +178,7 @@ public class PackageUtils { try { Signature sig = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES).signatures[0]; + // todo 目前测试的情况华为/小米/锤子均出现ANR // Fuck HUAWEI, 华为系统调用 getPackageArchiveInfo 获取魔羯 apk 的签名时会耗时超过5秒造成 ANR,没有找到解决方法 // 如果可以的话尽量避免调用 getPackageArchiveInfo 方法 Signature releaseSig = context.getPackageManager().getPackageArchiveInfo(apkFilePath, PackageManager.GET_SIGNATURES).signatures[0]; diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt index 3668167396..d8428be36e 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt @@ -198,7 +198,13 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas Utils.toast(it.context, R.string.install_failure_hint) DownloadManager.getInstance(it.context).cancel(apkEntity.url) } else { - PackageUtils.launchSetup(it.context, downloadEntity) + if (PackageUtils.isCanPluggable(apkEntity)) { + DialogUtils.showPluginDialog(it.context) { + it.context.startActivity(PackageUtils.getUninstallIntent(it.context, downloadEntity.path)) + } + } else { + PackageUtils.launchSetup(it.context, downloadEntity) + } } if (downloadEntity.isPluggable) { mtaValue = gameEntity.name + "_" + apkEntity.platformName + "_插件化安装" diff --git a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java index 6970b6696d..313c564abf 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java @@ -307,6 +307,10 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter implemen final GameUpdateViewHolder viewHolder = (GameUpdateViewHolder) holder; final GameUpdateEntity updateEntity = updateList.get(position - 1); + String pluginDesc = updateEntity.getPluginDesc(); + if (pluginDesc.length() > 3) pluginDesc = pluginDesc.substring(0, 3); + final String finalPluginDesc = pluginDesc; + if (updateEntity.getName().contains("光环助手")) { ImageUtils.display(viewHolder.guIcon, R.mipmap.logo); @@ -342,20 +346,20 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter implemen viewHolder.guUpdate.setOnClickListener(v -> { final String str = viewHolder.guUpdate.getText().toString(); - if ("更新".equals(str) || "插件化".equals(str)) { + if ("更新".equals(str) || str.contains("化")) { PermissionHelper.checkStoragePermissionBeforeAction(mContext, () -> { DialogUtils.checkDownload(mContext, updateEntity.getSize(), isSubscribe -> { - if ("插件化".equals(str)) { + if (str.contains("化")) { if (updateEntity.getPluggableCollection() != null) { - DownloadDialog.showDownloadDialog(mContext, updateEntity.transformGameEntity(), entrance, "插件化:" + updateEntity.getName()); + DownloadDialog.showDownloadDialog(mContext, updateEntity.transformGameEntity(), entrance, finalPluginDesc + "化:" + updateEntity.getName()); return; } else { - viewHolder.guUpdate.setText("插件化中"); + viewHolder.guUpdate.setText(R.string.downloading); viewHolder.guUpdate.setTextColor(ContextCompat.getColorStateList(mContext, R.color.text_plugining_style)); viewHolder.guUpdate.setBackgroundResource(R.drawable.game_item_btn_plugining_style); } } else { - viewHolder.guUpdate.setText(R.string.updating); + viewHolder.guUpdate.setText(R.string.downloading); viewHolder.guUpdate.setTextColor(ContextCompat.getColorStateList(mContext, R.color.text_downloading_style)); viewHolder.guUpdate.setBackgroundResource(R.drawable.game_item_btn_downloading_style); } @@ -388,7 +392,7 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter implemen viewHolder.guUpdate.setTextColor(Color.WHITE); viewHolder.guUpdate.setBackgroundResource(R.drawable.download_button_normal_style); } else if (updateEntity.isPluggable()) { - viewHolder.guUpdate.setText(R.string.pluggable); + viewHolder.guUpdate.setText((finalPluginDesc + "化")); viewHolder.guUpdate.setTextColor(Color.WHITE); downloadEntity = DownloadManager.getInstance(mContext).getDownloadEntityByPackageName( updateEntity.getPackageName()); 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 52ab233e8c..2520e8bd12 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt @@ -341,6 +341,7 @@ data class GameEntity( gameEntity.downloadType = downloadType gameEntity.downloadCompleteType = downloadCompleteType gameEntity.fixedTop = fixedTop + gameEntity.pluginDesc = pluginDesc return gameEntity } diff --git a/app/src/main/res/layout/dialog_download.xml b/app/src/main/res/layout/dialog_download.xml index e58f2e7956..18554ae04a 100644 --- a/app/src/main/res/layout/dialog_download.xml +++ b/app/src/main/res/layout/dialog_download.xml @@ -94,7 +94,9 @@ android:id="@+id/other_version_button_container" android:layout_width="match_parent" android:layout_height="40dp" - android:layout_alignParentBottom="true"> + android:layout_alignParentBottom="true" + android:visibility="gone" + tools:visibility="visible">