package com.sinata.xqmuse.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 androidx.core.os.bundleOf
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.utils.SPUtils
|
import com.amap.api.location.AMapLocationClient
|
import com.amap.apis.utils.core.api.AMapUtilCoreApi
|
import com.sinata.xqmuse.MainActivity
|
import com.sinata.xqmuse.R
|
import com.sinata.xqmuse.JkApplication
|
import com.sinata.xqmuse.dialog.UserRuleDialog
|
import com.sinata.xqmuse.network.Apis
|
import com.sinata.xqmuse.network.HttpManager
|
import com.sinata.xqmuse.network.request
|
import com.sinata.xqmuse.ui.guide.GuideActivity
|
import com.sinata.xqmuse.utils.Const
|
import com.umeng.commonsdk.UMConfigure
|
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() {
|
private var code = "" //如果不为空,需要跳转绑定页面
|
|
private var privacy:String? = null //隐私协议
|
private var user:String? = null //用户协议
|
|
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()
|
val data = intent.data
|
if (data!=null){
|
val url = data.toString()
|
Log.e("mmp","路径:${url}")
|
// if (url.startsWith("xqmuse://xqmuse.cn?mid=")){ //何健豪:不做跳转详情
|
// code = url.substring(url.indexOf("=")+1)
|
// Log.e("mmp","解析参数:音频id=${code}")
|
// }
|
}
|
AMapUtilCoreApi.setCollectInfoEnable(false)
|
if (SPUtils.instance().getBoolean(Const.User.IS_AGREE)){
|
AMapLocationClient.updatePrivacyShow(this,true,true)
|
AMapLocationClient.updatePrivacyAgree(this,true)
|
startNext()
|
}else{
|
getAgreement()
|
}
|
// val publicKey = getSignInfo(this)
|
// Log.e("mmp", "公钥:$publicKey")
|
}
|
|
private fun getAgreement() {
|
if (!SPUtils.instance().getBoolean(Const.User.IS_AGREE, false)) {
|
HttpManager.getH5(2).request(this) { _, data ->
|
privacy = data?.content?:""
|
showPrivacyAgreement()
|
}
|
HttpManager.getH5(1).request(this) { _, data ->
|
user = data?.content?: ""
|
showPrivacyAgreement()
|
}
|
}
|
}
|
|
private fun showPrivacyAgreement() {
|
if (privacy!=null && user!=null) {
|
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()
|
AMapLocationClient.updatePrivacyShow(this@SplashActivity,true,true)
|
AMapLocationClient.updatePrivacyAgree(this@SplashActivity,true)
|
} else
|
startNext()
|
}
|
})
|
userRuleDialog.show(supportFragmentManager, "rule")
|
}
|
}
|
|
private fun getImg() {
|
val map = hashMapOf<String, Any>()
|
HttpManager.queryString(Apis.querySystemImg,map).request(this){ _, data->
|
iv_img.setImageURI(data?:"")
|
}
|
}
|
|
protected fun getSignInfo(mContext: Context): String? {
|
var signcode = ""
|
try {
|
val packageInfo: PackageInfo = mContext.packageManager.getPackageInfo(
|
"com.sinata.xqmuse", PackageManager.GET_SIGNATURES
|
)
|
val signs: Array<Signature> = packageInfo.signatures
|
val sign: Signature = signs[0]
|
signcode = parseSignature(sign.toByteArray())
|
signcode = signcode.toLowerCase()
|
} catch (e: Exception) {
|
}
|
return 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(){
|
UMConfigure.preInit(this, Const.UMENG_KEY, "")
|
(application as JkApplication).initSdk()
|
if (SPUtils.instance().getBoolean(Const.FIRST_LAUNCH,true)){ //第一次启动显示引导页
|
SPUtils.instance().put(Const.FIRST_LAUNCH,false).apply()
|
startActivity<MainActivity>("code" to code,"isFirst" to true)
|
finish()
|
}else{
|
gotoMainOrLogin()
|
}
|
}
|
|
/***
|
* 跳转下一步
|
*/
|
private fun gotoMainOrLogin(){
|
object : CountDownTimer(2000, 500) {
|
override fun onFinish() {
|
startActivity<MainActivity>("code" to code)
|
finish()
|
}
|
override fun onTick(millisUntilFinished: Long) {
|
}
|
}.start()
|
}
|
}
|