lmw
2025-04-14 0361f47762f9958f2ec91fdb62bfc98de4e162a6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package com.xianning.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.Handler
import android.os.Looper
import android.util.Log
import androidx.core.app.ActivityCompat
import com.xianning.driver.R
import com.xianning.driver.base.Const
import com.xianning.driver.base.MyBaseActivity
import com.xianning.driver.netUtls.getToken
import com.xianning.driver.ui.main.MainActivity
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)
        Handler(Looper.getMainLooper()).postDelayed({
            callLast()
        },2000)
    }
 
    protected fun getSignInfo(mContext: Context): String{
        var signcode = ""
        try {
            val packageInfo: PackageInfo = mContext.packageManager.getPackageInfo(
                "com.xianning.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
    }
 
    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 callLast() {
        if (getToken().isNullOrEmpty()){
            startActivity<LoginActivity>()
        }else{
            startActivity<MainActivity>()
        }
    }
 
//    @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() {
    }
 
 
}