ApkUpdateDialog.kt 4.44 KB
Newer Older
1
package com.ydl.ydlcommon.utils
konghaorui committed
2

3
import android.annotation.SuppressLint
konghaorui committed
4 5 6
import android.app.Activity
import android.app.Dialog
import android.os.Bundle
konghaorui committed
7
import android.text.method.ScrollingMovementMethod
konghaorui committed
8 9
import android.view.View
import android.view.ViewGroup
10 11
import com.ydl.ydlcommon.R
import com.ydl.ydlcommon.bean.VersionData
konghaorui committed
12
import com.yidianling.common.tools.RxDeviceTool
konghaorui committed
13 14
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
15
import kotlinx.android.synthetic.main.platform_dialog_update_layout.*
konghaorui committed
16 17 18 19 20 21 22 23 24 25


/**
 * app升级
 * 兼容8.0系统
 */
class ApkUpdateDialog : Dialog{

    private var listener: ApkInstallTool.UpdateProgressListener? = null

26
    private var updateData : VersionData? = null
konghaorui committed
27 28 29 30 31 32 33 34 35 36 37 38 39

    private var activity : Activity? = null

    private var isCancleAble : Boolean = true

    private var apkIns : ApkInstallTool? = null

    private var Temp_Online_time = "2019-07-16 15:00:00" //假设是这个日期上线,为了弥补交互逗比需求

    constructor(activity: Activity?) : super(activity){
        this.activity = activity
    }

40
    @SuppressLint("SetTextI18n")
konghaorui committed
41 42
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
43
        setContentView(R.layout.platform_dialog_update_layout)
konghaorui committed
44 45

        tv_update_content.text = updateData?.title
46
        tv_update_content.movementMethod = ScrollingMovementMethod.getInstance();
konghaorui committed
47

konghaorui committed
48 49
        text_version.text = "v${updateData?.ver}"
        text_desc.text = updateData?.content
50
        text_desc.movementMethod = ScrollingMovementMethod.getInstance();
konghaorui committed
51 52 53 54 55 56

        v_downpress.setSize(28,14,6,9,4)
        v_downpress.setTextSize(10)
//        v_downpress.setProgress(0)

        listener = object : ApkInstallTool.UpdateProgressListener {
57
            @SuppressLint("CheckResult")
konghaorui committed
58 59 60 61 62 63 64 65 66 67 68 69 70 71
            override fun startLoad() {
                Observable.just(1)
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe({
                            tv_title.text = "新版本下载中"
                            text_version.visibility = View.GONE
                            tv_bottom_desc.text = "新版本正在努力更新中,请稍等"
                            lin_progress.visibility = View.VISIBLE
                            tv_confirm.visibility = View.GONE
                            lin_content.visibility = View.GONE
                            lin_sure.visibility = View.GONE
                        },{})
            }

72
            @SuppressLint("CheckResult")
konghaorui committed
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
            override fun progress(progress: Int) {
                Observable.just(1)
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe({
                            progress_bar.progress = progress
                            v_downpress.setProgress(progress)
                        },{})
            }
        }

        apkIns = ApkInstallTool()

        tv_confirm.setOnClickListener {
            //开始下载
            if(updateData?.installLink==null)return@setOnClickListener
            apkIns?.start(activity,updateData,listener)
        }

        if ("1" == updateData?.updateFlag){
            iv_close.visibility = View.GONE
        }else{
            iv_close.setOnClickListener {
                //取消下载
                apkIns?.cancleDown()
                if (tv_confirm.visibility == View.GONE){
                    //启动后台service下载
                    SystemDownloadFileUtil.getInstances(context).setUrl(updateData?.installLink).setVersion(updateData?.ver).start()
                }
                dismiss()
            }
        }
    }

    override fun onStart() {
        super.onStart()
konghaorui committed
108
        val padding = context.resources.getDimensionPixelSize(R.dimen.platform_default_dis_size_big)
konghaorui committed
109 110 111
        window.setLayout(
                RxDeviceTool.getScreenWidth(context) - padding, ViewGroup.LayoutParams.WRAP_CONTENT
        )
konghaorui committed
112
        window.setBackgroundDrawableResource(R.color.platform_transparent)
konghaorui committed
113 114 115 116
        setCancelable(isCancleAble)
        setCanceledOnTouchOutside(false)

    }
117
    fun setData(data : VersionData?): ApkUpdateDialog {
konghaorui committed
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
        updateData = data
        return this
    }

    /**
     * 是否允许取消
     */
    fun setCancle(cancleable : Boolean): ApkUpdateDialog {
        this.isCancleAble = cancleable
        return this
    }

    override fun show() {
        if (null == activity || activity!!.isFinishing){
            return
        }
        super.show()
    }
}