package com.dollearn.student.ui
|
|
import android.content.Context
|
import android.content.pm.PackageInfo
|
import android.content.pm.PackageManager
|
import android.content.pm.Signature
|
import android.os.Bundle
|
import android.os.CountDownTimer
|
import android.util.Log
|
import android.view.Window
|
import android.view.WindowManager
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.utils.SPUtils
|
import com.amap.api.maps.MapsInitializer
|
import com.dollearn.student.MainActivity
|
import com.dollearn.student.R
|
import com.dollearn.student.DollearnApplication
|
import com.dollearn.student.dialog.RuleDialog
|
import com.dollearn.student.network.Apis
|
import com.dollearn.student.network.HttpManager
|
import com.dollearn.student.network.request
|
import com.dollearn.student.ui.login.LoginActivity
|
import com.dollearn.student.utils.Const
|
import kotlinx.android.synthetic.main.activity_splash.*
|
import org.jetbrains.anko.startActivity
|
import java.io.ByteArrayInputStream
|
import java.security.cert.CertificateException
|
import java.security.cert.CertificateFactory
|
import java.security.cert.X509Certificate
|
import java.util.regex.Matcher
|
import java.util.regex.Pattern
|
|
|
class SplashActivity : BaseActivity() {
|
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)
|
getImg()
|
if (SPUtils.instance().getBoolean(Const.User.IS_AGREE)){
|
MapsInitializer.updatePrivacyShow(this@SplashActivity,true,true)
|
MapsInitializer.updatePrivacyAgree(this@SplashActivity,true)
|
startNext()
|
}else{
|
val ruleDialog = RuleDialog()
|
ruleDialog.setCallback(object :RuleDialog.OnClickCallback{
|
override fun onOk() {
|
MapsInitializer.updatePrivacyAgree(this@SplashActivity,true)
|
startNext()
|
}
|
})
|
MapsInitializer.updatePrivacyShow(this@SplashActivity,true,true)
|
iv_img.postDelayed({
|
ruleDialog.show(supportFragmentManager,"rule")
|
},500)
|
}
|
getSignInfo(this)
|
}
|
|
private fun getImg() {
|
val map = hashMapOf<String, Any>()
|
HttpManager.queryString(Apis.querySystemImg,map).request(this,false){ _, data->
|
iv_img.setImageURI(data?:"")
|
}
|
}
|
|
protected fun getSignInfo(mContext: Context){
|
var signcode = ""
|
try {
|
val packageInfo: PackageInfo = mContext.packageManager.getPackageInfo(
|
"com.dollearn.student", PackageManager.GET_SIGNATURES
|
)
|
val signs: Array<Signature> = packageInfo.signatures
|
val sign: Signature = signs[0]
|
signcode = parseSignature(sign.toByteArray())
|
signcode = signcode.toLowerCase()
|
} catch (e: Exception) {
|
}
|
Log.e("mmp", "公钥:$signcode")
|
}
|
|
protected fun parseSignature(signature: ByteArray): String {
|
var sign = ""
|
try {
|
val certFactory = CertificateFactory
|
.getInstance("X.509")
|
val cert = certFactory
|
.generateCertificate(ByteArrayInputStream(signature)) as X509Certificate
|
val pubKey = cert.publicKey.toString()
|
var ss = subString(pubKey)
|
ss = ss!!.replace(",", "")
|
ss = ss.toLowerCase()
|
val aa = ss.indexOf("modulus")
|
val bb = ss.indexOf("publicexponent")
|
sign = ss.substring(aa + 8, bb)
|
} catch (e: CertificateException) {
|
|
}
|
return sign
|
}
|
|
fun subString(sub: String?): String? {
|
val pp: Pattern = Pattern.compile("\\s*|\t|\r|\n")
|
val mm: Matcher = pp.matcher(sub)
|
return mm.replaceAll("")
|
}
|
|
|
/***
|
* 判断是否第一次启动
|
*/
|
private fun startNext(){
|
(application as DollearnApplication).initSdk()
|
// if (SPUtils.instance().getBoolean(Const.FIRST_LAUNCH,true)){ //第一次启动显示引导页
|
// HttpManager.querySystemSetByType(3).request(this,false,{_,data->
|
// val s = data?.optString("content")
|
// if (!s.isNullOrEmpty()){
|
// SPUtils.instance().put(Const.FIRST_LAUNCH,false).apply()
|
// startActivity<GuideActivity>("img" to s)
|
// finish()
|
// }else{
|
// gotoMainOrLogin()
|
// }
|
// }){_,_->
|
// gotoMainOrLogin()
|
// }
|
// }else{
|
// gotoMainOrLogin()
|
// }
|
gotoMainOrLogin()
|
|
}
|
|
/***
|
* 跳转下一步
|
*/
|
private fun gotoMainOrLogin(){
|
object : CountDownTimer(2000, 500) {
|
override fun onFinish() {
|
val token = SPUtils.instance().getString(Const.User.TOKEN)
|
if (token.isEmpty())
|
startActivity<LoginActivity>()
|
else
|
startActivity<MainActivity>()
|
finish()
|
}
|
override fun onTick(millisUntilFinished: Long) {
|
}
|
}.start()
|
}
|
}
|