package com.fuban.user.ui
|
|
import android.content.Intent
|
import android.net.Uri
|
import android.os.Bundle
|
import android.os.CountDownTimer
|
import android.util.Log
|
import android.view.Window
|
import android.view.WindowManager
|
import androidx.core.os.bundleOf
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.utils.SPUtils
|
import cn.sinata.xldutils.utils.optInt
|
import cn.sinata.xldutils.utils.optString
|
import com.amap.api.location.AMapLocationClient
|
import com.fuban.user.BuildConfig
|
import com.fuban.user.FBApplication
|
import com.fuban.user.R
|
import com.fuban.user.dialog.TipDialog
|
import com.fuban.user.dialog.UserRuleDialog
|
import com.fuban.user.network.HttpManager
|
import com.fuban.user.network.entity.Function
|
import com.fuban.user.network.request
|
import com.fuban.user.utils.Const
|
import org.jetbrains.anko.startActivity
|
|
|
class SplashActivity : BaseActivity() {
|
private val aMapLocationClient by lazy {
|
AMapLocationClient(this)
|
}
|
private val func = arrayListOf<Function>()//开通业务模块,MainActivity必须参数
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
window.requestFeature(Window.FEATURE_NO_TITLE)
|
window.setFlags(
|
WindowManager.LayoutParams.FLAG_FULLSCREEN,
|
WindowManager.LayoutParams.FLAG_FULLSCREEN
|
)
|
super.onCreate(savedInstanceState)
|
setContentView(R.layout.activity_splash)
|
getAgreement()
|
}
|
|
fun getNewVersion() {
|
HttpManager.queryNewData().request(this, false, { _, it ->
|
it?.run {
|
if (version > BuildConfig.VERSION_NAME && mandatory != 0) {
|
val tipDialog = TipDialog()
|
tipDialog.arguments =
|
bundleOf("msg" to "当前版本已过期,请立即更新", "ok" to "去更新", "isAlert" to true)
|
tipDialog.setCallback(object : TipDialog.OnClickCallback {
|
override fun onOk() {
|
val intent = Intent()
|
intent.action = "android.intent.action.VIEW"
|
intent.data = Uri.parse(url)
|
startActivity(intent)
|
}
|
|
override fun onCancel() {
|
}
|
})
|
tipDialog.setDismissCallback(object : TipDialog.OnDismiss {
|
override fun onDismiss() {
|
finish()
|
}
|
})
|
tipDialog.show(supportFragmentManager, "update")
|
} else {
|
requestLocation()
|
}
|
}
|
}) { _, _ ->
|
requestLocation()
|
}
|
}
|
|
private val app by lazy {
|
application as FBApplication
|
}
|
|
private fun initApplication() {
|
app.initUm()
|
}
|
|
private fun requestLocation() {
|
initLocationOption()
|
// val disposable =
|
// RxPermissions(this@SplashActivity).request(Manifest.permission.ACCESS_FINE_LOCATION)
|
// .subscribe {
|
// if (it) {
|
// initLocationOption()
|
// aMapLocationClient.startLocation()
|
// } else {
|
// myToast("没有定位权限")
|
// startMain(false)
|
// }
|
// }
|
// onBindHelper(disposable)
|
}
|
|
/**
|
* 高德定位设置
|
*/
|
var defaultCityCode = "450202"
|
var defaultCity = "柳州市"
|
var defaultDistrict = "城中区"
|
var defaultProvince = "广西壮族自治区"
|
private fun initLocationOption() {
|
HttpManager.isOpenCity(defaultCityCode).request(this, success = { _, data ->
|
data?.run {
|
if (optInt("open") == 1) {//当前城市开通
|
FBApplication.chooseCityName = defaultCity
|
FBApplication.chooseCityCode = defaultCityCode
|
HttpManager.queryBusiness(defaultCity, defaultProvince, defaultDistrict)
|
.request(this@SplashActivity, success = { _, data ->
|
Log.e(
|
Const.Tag,
|
"当前城市业务模块" + data?.joinToString(",") { it.name })
|
func.addAll(data ?: arrayListOf())
|
startMain(true)
|
}, error = { _, _ ->
|
startMain(false)
|
})
|
} else {//未开通
|
// myToast("当前城市未开通")
|
startMain(false)
|
}
|
}
|
}, error = { _, _ ->
|
startMain(false)
|
})
|
|
|
// val option = AMapLocationClientOption()
|
// option.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy
|
// option.isMockEnable = false
|
// option.isOnceLocation = true
|
// aMapLocationClient.setLocationOption(option)
|
// aMapLocationClient.setLocationListener {
|
// if (it.errorCode == 0) {
|
// OkApplication.cityCode = it.adCode
|
// OkApplication.cityName = it.city
|
// OkApplication.lat = it.latitude
|
// OkApplication.lon = it.longitude
|
// HttpManager.isOpenCity(it.adCode).request(this, success = { _, data ->
|
// data?.run {
|
// if (optInt("open") == 1) {//当前城市开通
|
// OkApplication.chooseCityName = it.city
|
// OkApplication.chooseCityCode = it.adCode
|
// HttpManager.queryBusiness(it.city, it.province, it.district)
|
// .request(this@SplashActivity, success = { _, data ->
|
// Log.e(
|
// Const.Tag,
|
// "当前城市业务模块" + data?.joinToString(",") { it.name })
|
// func.addAll(data ?: arrayListOf())
|
// startMain(true)
|
// }, error = { _, _ ->
|
// startMain(false)
|
// })
|
// } else {//未开通
|
// myToast("当前城市未开通")
|
// startMain(false)
|
// }
|
// }
|
// }, error = { _, _ ->
|
// startMain(false)
|
// })
|
// Log.e("mmp", it.city)
|
// } else {//定位失败
|
// myToast("定位失败")
|
// startMain(false)
|
// }
|
// }
|
}
|
|
|
/***
|
* 跳转主页
|
* @param isOpen{
|
* true: 定位成功且为开通城市,携带业务类型列表进入主页
|
* false:定位失败/无定位权限/城市未开通,不携带业务类型列表进入主页}
|
*/
|
private fun startMain(isOpen: Boolean) {
|
object : CountDownTimer(1500, 500) {
|
override fun onFinish() {
|
initApplication()
|
if (func.isEmpty()) {
|
// func.add()
|
}
|
startActivity<MainActivity>("isOpen" to isOpen, "func" to func)
|
finish()
|
}
|
|
override fun onTick(millisUntilFinished: Long) {
|
}
|
}.start()
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
aMapLocationClient.onDestroy()
|
}
|
|
private var privacy = "" //隐私协议
|
private var user = "" //用户协议
|
private fun getAgreement() {
|
if (!SPUtils.instance().getBoolean(Const.User.IS_AGREE, false)) {
|
HttpManager.getH5(1).request(this) { _, data ->
|
privacy = data?.optString("content") ?: ""
|
showPrivacyAgreement()
|
}
|
HttpManager.getH5(2).request(this) { _, data ->
|
user = data?.optString("content") ?: ""
|
showPrivacyAgreement()
|
}
|
} else
|
getNewVersion()
|
}
|
|
private fun showPrivacyAgreement() {
|
if (privacy.isNotEmpty() && user.isNotEmpty()) {
|
val userRuleDialog = UserRuleDialog()
|
userRuleDialog.arguments = bundleOf("privacy" to privacy, "user" to user)
|
userRuleDialog.setDismissCallback(object : UserRuleDialog.OnDismiss {
|
override fun onDismiss() {
|
if (!SPUtils.instance().getBoolean(Const.User.IS_AGREE, false))
|
finish()
|
else
|
getNewVersion()
|
}
|
})
|
userRuleDialog.show(supportFragmentManager, "rule")
|
}
|
}
|
}
|