138 lines
6.0 KiB
Kotlin
138 lines
6.0 KiB
Kotlin
package com.gh.common.dialog
|
|
|
|
import android.app.Activity.RESULT_OK
|
|
import android.content.Intent
|
|
import android.os.Build
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import android.widget.ImageView
|
|
import android.widget.TextView
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.fragment.app.FragmentTransaction
|
|
import com.airbnb.lottie.LottieAnimationView
|
|
import com.gh.common.constant.Config
|
|
import com.gh.common.constant.Constants
|
|
import com.gh.common.util.*
|
|
import com.gh.common.util.PermissionHelper.INSTALL_PERMISSION_CODE
|
|
import com.gh.common.xapk.XapkInstaller
|
|
import com.gh.gamecenter.R
|
|
import com.lightgame.download.DownloadEntity
|
|
import com.lightgame.utils.Utils
|
|
import kotlin.random.Random
|
|
|
|
class InstallPermissionDialogFragment : BaseTrackableDialogFragment() {
|
|
|
|
lateinit var mView: View
|
|
var isXapk = false
|
|
var url: String = ""
|
|
var mCallBack: ((isFromPermissionGrantedCallback: Boolean) -> Unit)? = null
|
|
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
|
mView = inflater.inflate(R.layout.dialog_install_permission, null, false)
|
|
return mView
|
|
}
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
super.onViewCreated(view, savedInstanceState)
|
|
val closeTv = mView.findViewById<TextView>(R.id.closeTv)
|
|
val closeIv = mView.findViewById<ImageView>(R.id.closeIv)
|
|
val activateTv = mView.findViewById<TextView>(R.id.activateTv)
|
|
val contentTv = mView.findViewById<TextView>(R.id.contentTv)
|
|
val switchLottie = mView.findViewById<LottieAnimationView>(R.id.switchLottie)
|
|
contentTv.text = if (isXapk) "未授权下解压XAPK可能导致解压失败" else "以保证游戏的安装和更新"
|
|
|
|
switchLottie.setAnimation("lottie/install_permission_switch.json")
|
|
switchLottie.playAnimation()
|
|
|
|
val randomNumber = if (isXapk) 1 else Random.nextInt(2)
|
|
closeTv.goneIf(randomNumber == 0)
|
|
closeIv.goneIf(randomNumber != 0)
|
|
if (isXapk) {
|
|
closeTv.text = "暂不,尝试解压"
|
|
closeIv.visibility = View.VISIBLE
|
|
}
|
|
|
|
closeTv.setOnClickListener {
|
|
MtaHelper.onEvent(getEvent(), getKey(), "文案样式_点击以后再说")
|
|
if (isXapk) {
|
|
mCallBack?.invoke(false)
|
|
}
|
|
dismiss()
|
|
}
|
|
closeIv.setOnClickListener {
|
|
MtaHelper.onEvent(getEvent(), getKey(), "图标样式_点击关闭")
|
|
dismiss()
|
|
}
|
|
activateTv.setOnClickListener {
|
|
MtaHelper.onEvent(getEvent(), getKey(), if (randomNumber == 0) "文案样式_点击立即开启" else "图标样式_点击立即开启")
|
|
PermissionHelper.toInstallPermissionSetting(requireActivity())
|
|
if (isXapk) {
|
|
SPUtils.setString(Constants.SP_XAPK_UNZIP_ACTIVITY, requireActivity().javaClass.name)
|
|
SPUtils.setString(Constants.SP_XAPK_URL, url)
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
|
super.onActivityResult(requestCode, resultCode, data)
|
|
if (resultCode == RESULT_OK && requestCode == INSTALL_PERMISSION_CODE) {
|
|
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {
|
|
SPUtils.setString(Constants.SP_XAPK_UNZIP_ACTIVITY, "")
|
|
SPUtils.setString(Constants.SP_XAPK_URL, "")
|
|
}
|
|
mCallBack?.invoke(true)
|
|
dismiss()
|
|
}
|
|
}
|
|
|
|
override fun getEvent(): String = "安装引导弹窗"
|
|
|
|
override fun getKey(): String = "引导弹窗"
|
|
|
|
companion object {
|
|
@JvmStatic
|
|
fun show(activity: AppCompatActivity, downloadEntity: DownloadEntity, callBack: ((isFromPermissionGrantedCallback: Boolean) -> Unit)?) {
|
|
val isXapk = XapkInstaller.XAPK_EXTENSION_NAME == downloadEntity.path.getExtension()
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
|
callBack?.invoke(false)
|
|
return
|
|
}
|
|
val haveInstallPermission = activity.packageManager.canRequestPackageInstalls()
|
|
if (haveInstallPermission) {
|
|
callBack?.invoke(false)
|
|
return
|
|
}
|
|
if (isXapk) {
|
|
val xapkUnzipVersions = Config.getSettings()?.permissionPopupAppliedVersions?.xapkUnzip
|
|
if (xapkUnzipVersions?.contains(Build.VERSION.SDK_INT.toString()) == false) {
|
|
callBack?.invoke(false)
|
|
return
|
|
}
|
|
} else {
|
|
val installVersions = Config.getSettings()?.permissionPopupAppliedVersions?.install
|
|
if (installVersions?.contains(Build.VERSION.SDK_INT.toString()) == false) {
|
|
callBack?.invoke(false)
|
|
return
|
|
}
|
|
}
|
|
var installPermissionDialogFragment = activity.supportFragmentManager.findFragmentByTag(InstallPermissionDialogFragment::class.java.simpleName) as? InstallPermissionDialogFragment
|
|
if (installPermissionDialogFragment != null) {
|
|
installPermissionDialogFragment.mCallBack = callBack
|
|
installPermissionDialogFragment.isXapk = isXapk
|
|
installPermissionDialogFragment.url = downloadEntity.url
|
|
val transaction: FragmentTransaction = activity.supportFragmentManager.beginTransaction()
|
|
transaction.show(installPermissionDialogFragment)
|
|
transaction.commit()
|
|
} else {
|
|
installPermissionDialogFragment = InstallPermissionDialogFragment().apply {
|
|
this.mCallBack = callBack
|
|
this.isXapk = isXapk
|
|
this.url = downloadEntity.url
|
|
}
|
|
installPermissionDialogFragment.show(activity.supportFragmentManager, InstallPermissionDialogFragment::class.java.simpleName)
|
|
}
|
|
}
|
|
}
|
|
} |