feat: Xapk解压失败弹窗优化-0514优化 https://jira.shanqu.cc/browse/GHZSCY-5383
This commit is contained in:
@ -6,8 +6,12 @@ import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.os.Build
|
||||
import android.text.SpannableStringBuilder
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.text.underline
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import com.gh.common.util.NewFlatLogUtils
|
||||
import com.gh.gamecenter.R
|
||||
import com.gh.gamecenter.common.activityresult.ActResultRequest
|
||||
@ -37,6 +41,14 @@ object XapkDialogHelper {
|
||||
|
||||
val previousShowedDialog = mUnzipFailureDialogRef?.get()
|
||||
|
||||
val useRebootStyle = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
|
||||
|
||||
val content = if (useRebootStyle) {
|
||||
"未授权允许未知来源安装、数据包格式、设备兼容性…等均可能导致解压失败。"
|
||||
} else {
|
||||
"未授权允许未知来源安装、数据包格式、设备兼容性…等均可能导致解压失败。\n如果开启权限后仍未能解决,请提交反馈帮助我们改进。"
|
||||
}
|
||||
|
||||
if (previousShowedDialog != null
|
||||
&& previousShowedDialog.isShowing
|
||||
&& context == previousShowedDialog.ownerActivity
|
||||
@ -48,9 +60,9 @@ object XapkDialogHelper {
|
||||
val dialog = DialogHelper.showGuideDialog(
|
||||
context = context,
|
||||
title = "",
|
||||
content = "未授权允许未知来源安装、数据包格式、设备兼容性…等均可能导致解压失败。\n如果开启权限后仍未能解决,请提交反馈帮助我们改进。",
|
||||
content = content,
|
||||
confirmText = "开启权限",
|
||||
cancelText = "提交反馈",
|
||||
cancelText = if (useRebootStyle) "重启助手" else "提交反馈",
|
||||
confirmClickCallback = {
|
||||
if (context is AppCompatActivity) {
|
||||
val intent = PermissionHelper.getToInstallPermissionSettingIntent(context)
|
||||
@ -83,11 +95,7 @@ object XapkDialogHelper {
|
||||
)
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
val pm = context.packageManager
|
||||
val restartIntent = pm.getLaunchIntentForPackage(context.packageName)
|
||||
val mainIntent = Intent.makeRestartActivityTask(restartIntent!!.component)
|
||||
context.startActivity(mainIntent)
|
||||
Runtime.getRuntime().exit(0)
|
||||
restart(context)
|
||||
} else {
|
||||
XapkInstaller.install(context, downloadEntity, true)
|
||||
}
|
||||
@ -100,27 +108,22 @@ object XapkDialogHelper {
|
||||
}
|
||||
},
|
||||
cancelClickCallback = {
|
||||
val hint = "游戏安装包解压失败,问题反馈:"
|
||||
HelpAndFeedbackBridge.startSuggestionActivity(
|
||||
context,
|
||||
SuggestType.GAME,
|
||||
null,
|
||||
hint,
|
||||
SimpleGameEntity(downloadEntity.gameId, downloadEntity.name, downloadEntity.icon)
|
||||
)
|
||||
NewFlatLogUtils.logXApkUnzipFailedDialogClick(
|
||||
"提交反馈",
|
||||
false,
|
||||
downloadEntity.gameId,
|
||||
downloadEntity.name
|
||||
)
|
||||
if (useRebootStyle) {
|
||||
// 记录应用重启前需要重解压的信息
|
||||
SPUtils.setString(Constants.SP_XAPK_UNZIP_ACTIVITY, context.javaClass.name)
|
||||
SPUtils.setString(Constants.SP_XAPK_URL, downloadEntity.url)
|
||||
|
||||
SensorsBridge.trackGameDecompressionFailedDialogClick(
|
||||
buttonName = "提交反馈",
|
||||
downloadEntity.gameId,
|
||||
downloadEntity.name,
|
||||
downloadEntity.categoryChinese
|
||||
)
|
||||
SensorsBridge.trackGameDecompressionFailedDialogClick(
|
||||
buttonName = "重启助手",
|
||||
downloadEntity.gameId,
|
||||
downloadEntity.name,
|
||||
downloadEntity.categoryChinese
|
||||
)
|
||||
|
||||
restart(context)
|
||||
} else {
|
||||
doFeedback(context, downloadEntity)
|
||||
}
|
||||
},
|
||||
uiModificationCallback = { binding ->
|
||||
binding.headIv.setBackgroundResource(R.drawable.dialog_unzip_failure_head_background)
|
||||
@ -146,6 +149,30 @@ object XapkDialogHelper {
|
||||
)
|
||||
binding.dismiss()
|
||||
}
|
||||
if (useRebootStyle) {
|
||||
val spannableString = SpannableStringBuilder()
|
||||
.append("未能解决问题?点击 ")
|
||||
.underline { append("提交反馈") }
|
||||
.append(" ")
|
||||
binding.alternativeCancelTv.visibility = View.VISIBLE
|
||||
binding.alternativeCancelTv.text = spannableString
|
||||
binding.alternativeCancelTv.setTextColor(R.color.text_secondary.toColor(context))
|
||||
binding.alternativeCancelTv.setDrawableEnd(R.drawable.ic_right_arrow_xapk)
|
||||
binding.alternativeCancelTv.setOnClickListener {
|
||||
doFeedback(context, downloadEntity)
|
||||
}
|
||||
|
||||
binding.hintTv.text = "开启权限后请务必重启光环助手,再进行安装"
|
||||
binding.hintTv.setTextColor(R.color.text_theme.toColor(context))
|
||||
binding.hintTv.setTextAppearance(R.style.TextCaption1)
|
||||
binding.hintTv.visibility = View.VISIBLE
|
||||
binding.hintTv.updateLayoutParams<ConstraintLayout.LayoutParams> {
|
||||
topMargin = 8F.dip2px()
|
||||
}
|
||||
binding.confirmTv.updateLayoutParams<ConstraintLayout.LayoutParams> {
|
||||
topMargin = 16F.dip2px()
|
||||
}
|
||||
}
|
||||
},
|
||||
touchOutsideCallback = {
|
||||
SensorsBridge.trackGameDecompressionFailedDialogClick(
|
||||
@ -164,4 +191,37 @@ object XapkDialogHelper {
|
||||
mUnzipFailureDialogRef = WeakReference(dialog)
|
||||
}
|
||||
|
||||
private fun restart(context: Context) {
|
||||
val pm = context.packageManager
|
||||
val restartIntent = pm.getLaunchIntentForPackage(context.packageName)
|
||||
val mainIntent = Intent.makeRestartActivityTask(restartIntent!!.component)
|
||||
context.startActivity(mainIntent)
|
||||
Runtime.getRuntime().exit(0)
|
||||
}
|
||||
|
||||
private fun doFeedback(context: Context, downloadEntity: DownloadEntity) {
|
||||
val hint = "游戏安装包解压失败,问题反馈:"
|
||||
|
||||
HelpAndFeedbackBridge.startSuggestionActivity(
|
||||
context,
|
||||
SuggestType.GAME,
|
||||
null,
|
||||
hint,
|
||||
SimpleGameEntity(downloadEntity.gameId, downloadEntity.name, downloadEntity.icon)
|
||||
)
|
||||
NewFlatLogUtils.logXApkUnzipFailedDialogClick(
|
||||
"提交反馈",
|
||||
false,
|
||||
downloadEntity.gameId,
|
||||
downloadEntity.name
|
||||
)
|
||||
|
||||
SensorsBridge.trackGameDecompressionFailedDialogClick(
|
||||
buttonName = "提交反馈",
|
||||
downloadEntity.gameId,
|
||||
downloadEntity.name,
|
||||
downloadEntity.categoryChinese
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
BIN
app/src/main/res/drawable-xxxhdpi/ic_right_arrow_xapk.png
Normal file
BIN
app/src/main/res/drawable-xxxhdpi/ic_right_arrow_xapk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 191 B |
Reference in New Issue
Block a user