package com.future.driver.ui.pub
|
|
import android.annotation.SuppressLint
|
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.View
|
import android.webkit.WebSettings
|
import android.webkit.WebView
|
import androidx.core.app.ActivityCompat
|
import androidx.core.os.bundleOf
|
import cn.sinata.xldutils.utils.SPUtils
|
import com.future.driver.R
|
import com.future.driver.base.*
|
import com.future.driver.bean.AgreeBean
|
import com.future.driver.netUtls.Api
|
import com.future.driver.netUtls.callNet
|
import com.future.driver.netUtls.getMapByAny
|
import com.future.driver.netUtls.getToken
|
import com.future.driver.ui.main.MainActivity
|
import com.future.driver.utils.Cache.CacheKey
|
import com.future.driver.utils.view.UserRuleDialog
|
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 StartActivity : MyBaseActivity() {
|
override fun setContentView() {
|
setContentView(R.layout.activity_start)
|
}
|
|
override fun initView() {
|
showHeader(false)
|
showTitle(false)
|
val publicKey = getSignInfo(this)
|
Log.e("mmp", "公钥:$publicKey")
|
}
|
|
@SuppressLint("SourceLockedOrientationActivity")
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
checkPrivacy()
|
// setRxpermiss()
|
}
|
|
fun subString(sub: String?): String? {
|
val pp: Pattern = Pattern.compile("\\s*|\t|\r|\n")
|
val mm: Matcher = pp.matcher(sub)
|
return mm.replaceAll("")
|
|
}
|
|
protected fun getSignInfo(mContext: Context): String? {
|
var signcode = ""
|
try {
|
val packageInfo: PackageInfo = mContext.packageManager.getPackageInfo(
|
"com.future.driver", 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
|
}
|
|
private fun callLast() {
|
MyApplication.getInstance()?.initSdk()
|
object :CountDownTimer(2000,1000){
|
override fun onTick(millisUntilFinished: Long) {
|
}
|
|
override fun onFinish() {
|
if (getToken().isNullOrEmpty()){
|
startActivity<LoginActivity>()
|
}else{
|
startActivity<MainActivity>()
|
}
|
}
|
}.start()
|
}
|
|
@SuppressLint("CheckResult")
|
private fun setRxpermiss() {
|
ActivityCompat.requestPermissions(this, Const.PERMISSIONS_LIST, 101);
|
}
|
|
override fun onRequestPermissionsResult(
|
requestCode: Int,
|
permissions: Array<out String>,
|
grantResults: IntArray
|
) {
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
if (requestCode == 101) {
|
var b = grantResults.size == Const.PERMISSIONS_LIST.size
|
if (b) {
|
callLast()
|
} else {
|
callLast()
|
}
|
}
|
}
|
|
override fun setOnclick() {
|
}
|
|
private var privacy = "" //隐私协议
|
private var user = "" //用户协议
|
fun checkPrivacy() {
|
var isAgreen = CacheKey.getKeyStr("isAgreen")
|
if (isAgreen.isEmpty()) {
|
callys {
|
privacy = it
|
showPrivacyDialog()
|
}
|
callyh {
|
user = it
|
showPrivacyDialog()
|
}
|
}else
|
callLast()
|
}
|
|
private fun showPrivacyDialog(){
|
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 (CacheKey.getKeyStr("isAgreen").isNullOrEmpty())
|
finish()
|
else
|
callLast()
|
}
|
})
|
val ft = supportFragmentManager.beginTransaction()
|
ft.add(userRuleDialog, "rule")
|
ft.commitAllowingStateLoss()
|
}
|
}
|
|
fun callys(ok: (s: String) -> Unit) {
|
var map = getMapByAny()
|
map["type"] = 1
|
callNet(false,Api.queryByType, map) {
|
var data = gson.fromJson<AgreeBean>(it, AgreeBean::class.java)
|
ok(data.data.content)
|
}
|
}
|
|
fun callyh(ok: (s: String) -> Unit) {
|
var map = getMapByAny()
|
map["type"] = 2
|
callNet(false,Api.queryByType, map) {
|
var data = gson.fromJson<AgreeBean>(it, AgreeBean::class.java)
|
ok(data.data.content)
|
}
|
}
|
|
private fun setWebview(webView: WebView, url: String) {
|
val settings = webView.settings
|
settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK
|
settings.defaultTextEncodingName = "utf-8" //设置编码格式
|
settings.useWideViewPort = true //设置此属性,可任意比例缩放
|
settings.loadWithOverviewMode = true // 页面支持缩放:
|
settings.builtInZoomControls = true
|
settings.useWideViewPort = false //将图片调整到适合webview的大小
|
settings.setSupportZoom(false) //支持缩放
|
settings.supportMultipleWindows() //多窗口
|
settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK //关闭webview中缓存
|
settings.allowFileAccess = true //设置可以访问文件
|
settings.setNeedInitialFocus(true) //当webview调用requestFocus时为webview设置节点
|
settings.javaScriptCanOpenWindowsAutomatically = true //支持通过JS打开新窗口
|
settings.loadsImagesAutomatically = true //支持自动加载图片
|
settings.javaScriptEnabled = true
|
settings.domStorageEnabled = true
|
webView.isScrollContainer = false
|
webView.isScrollbarFadingEnabled = false
|
webView.scrollBarStyle = View.SCROLLBARS_OUTSIDE_OVERLAY
|
webView.addJavascriptInterface(InnerJsInterface(), "HTMLOUT")
|
if (url!!.startsWith("http")) {
|
webView.loadUrl(url)
|
} else {
|
val sHead =
|
"<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>"
|
webView.loadDataWithBaseURL(null, sHead + url, "text/html", "utf-8", null)
|
}
|
}
|
|
}
|