package com.xhly.manageapp


import android.app.csdk.CSDKManager
import androidx.multidex.MultiDexApplication
import com.hjq.toast.Toaster
import com.xhly.corelib.utils.ModelNameUtils

class ManageApplication : MultiDexApplication() {
    companion object {
        private var csdkManager: CSDKManager? = null

        /**
         * 加入可安装应用白名单
         */
        fun addInstallPackageWhiteList(pkgList: ArrayList<String>) {
            if (ModelNameUtils.IS_LianxX505f()) {
                pkgList.add("com.xhly.manageapp")
                csdkManager?.addInstallPackageWhiteList(pkgList)
            }
        }

        /**
         * 移除可安装应用白名单
         */
        fun removeInstallPackageWhiteList(pkgList: ArrayList<String>) {
            if (ModelNameUtils.IS_LianxX505f() && pkgList.size > 0) {
                pkgList.remove("com.xhly.manageapp")
                csdkManager?.removeInstallPackageWhiteList(pkgList)
            }
        }

        /**
         * 禁止安装app,true：禁止安装应用 false：取消禁止安装应用,禁止时静默安装只能安装白名单内的应用，不禁止时静默安装可以安装白名单外的应用
         */
        fun disableInstallation(isInstall: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.disableInstallation(isInstall)
            }
        }

        /**
         * 冻结应用true：显示应用可以使用; false：隐藏应用不可用
         */
        fun setPackageEnabled(pkg: String, enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.setPackageEnabled(pkg, enableFlag)
            }
        }

        /**
         * 设置显示黑名单,控制桌面是否显示图标
         */
        fun setDisplayBlacklist(pkgList: ArrayList<String>) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.displayBlacklistV3 = pkgList
            }
        }

        /**
         * 杀进程
         */
        fun killApplicationProcess(pkg: String) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.killApplicationProcess(pkg)
            }
        }

        /**
         * 禁用摄像头 true：禁用相机
         * false：启用相机
         */
        fun disableCamera(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.disableCamera(enableFlag)
            }
        }

        /**
         * 打开关闭蓝牙true：打开蓝牙
         * false：关闭蓝牙
         */
        fun enableBluetooth(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.enableBluetoothV3(enableFlag)
            }
        }

        /**
         * 打开关闭usb调试
         */
        fun disallowUsbDebugging(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.disallowUsbDebuggingV3(enableFlag)
            }
        }

        /**
         * 禁止用户操作 wifi true：不可操作false：可以操作
         */
        fun disallowWifi(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.disallowWifiV3(enableFlag)
            }
        }

        /**
         * 打开关闭 wifi true：打开 wifi false：关闭 wifi
         */
        fun enableWifi(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.enableWifiV3(enableFlag)
            }
        }

        /**
         * 禁止用户操作移动数据 true：不可操作 false：可以操作
         */
        fun disallowData(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.disallowDataV3(enableFlag)
            }
        }

        /**
         * 打开关闭移动数据 true：打开 false：关闭
         */
        fun enableData(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.enableDataV3(enableFlag)
            }
        }

        /**
         * 禁止操作位置 true：不可操作 false：可以操作
         */
        fun disallowLocation(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.disallowLocationV3(enableFlag)
            }
        }

        /**
         * 打开关闭位置 true：打开 false：关闭
         */
        fun enableLocation(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.enableLocationV3(enableFlag)
            }
        }

        /**
         * 禁止操作 wifi 高级设置 true：不可操作 false：可以操作
         */
        fun disallowWifiAdvanceSettings(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.disallowWifiAdvanceSettingsV3(enableFlag)
            }
        }

        /**
         *禁用/启用SD卡 true：允许连接外部存储设备
         */
        fun enableMassStorage(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.enableMassStorage(enableFlag)
            }
        }

        /**
         *禁用/启用OTG true：允许连接外部OTG
         */
        fun setCustomOTG(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.isCustomOtg = enableFlag
            }
        }

        /**
         * 设置运行时权限
         */
        fun setRuntimePermissions(enableFlag: Boolean) {
            if (ModelNameUtils.IS_LianxX505f()) {
                csdkManager?.setRuntimePermissions(enableFlag)
            }
        }

        /**
         * "设备Mac地址", "设备SN号", "获取设备型号信息", "获取设备IMEI信息" 1,2,3,4
         */
        fun getDeviceInfo(type: Int = 2): String? {
            if (ModelNameUtils.IS_LianxX505f()) {
                return csdkManager?.getDeviceInfo(type)
            }
            return "0"
        }
    }

    override fun onCreate() {
        super.onCreate()
        Toaster.init(this)
        if (ModelNameUtils.IS_LianxX505f()) {
            //是505f则执行
            csdkManager = CSDKManager(this)
            addInstallPackageWhiteList(arrayListOf("com.xhly.manageapp"))
            disableInstallation(false)
            setRuntimePermissions(true)
        }
    }
}