307 lines
11 KiB
Kotlin
307 lines
11 KiB
Kotlin
package com.yingmao.clash.webview
|
|
|
|
import android.app.Activity
|
|
import android.content.Intent
|
|
import android.content.pm.ActivityInfo
|
|
import android.net.Uri
|
|
import android.os.Bundle
|
|
import android.os.CountDownTimer
|
|
import android.text.TextUtils
|
|
import android.view.View
|
|
import android.webkit.WebChromeClient
|
|
import android.webkit.WebView
|
|
import android.webkit.WebViewClient
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.lifecycle.ViewModelProvider
|
|
import com.tencent.mmkv.MMKV
|
|
import com.yingmao.clash.BuildConfig
|
|
import com.yingmao.clash.R
|
|
import com.cncat.vpn.common.log.Log
|
|
import com.yingmao.clash.base.BaseActivity
|
|
import com.yingmao.clash.conf.BZYConstants
|
|
import com.yingmao.clash.listener.AsyncBodyCallback
|
|
import com.yingmao.clash.util.StatusBarUtils
|
|
import com.yingmao.clash.vm.LoginAtyVM
|
|
import com.yingmao.clash.vm.WebViewAtyVM
|
|
import java.net.URLDecoder
|
|
import java.net.URLEncoder
|
|
|
|
class BZYWebViewKeFu : BaseActivity() {
|
|
private lateinit var webView: WebView
|
|
private lateinit var webViewAtyVM: WebViewAtyVM
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
setContentView(R.layout.bzy_kefu_webview_layout)
|
|
|
|
// requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; //竖屏
|
|
// StatusBarUtils.with(this).init()
|
|
webViewAtyVM = ViewModelProvider(this).get(WebViewAtyVM::class.java)
|
|
observe(this, webViewAtyVM)
|
|
|
|
initView()
|
|
}
|
|
|
|
private fun initView() {
|
|
findViewById<View>(R.id.iv_back).setOnClickListener { finish() }
|
|
webView = findViewById(R.id.webView)
|
|
setWebView()
|
|
countDown()
|
|
}
|
|
|
|
private fun countDown() {
|
|
val timer = object : CountDownTimer(5000, 1000) {
|
|
override fun onTick(millisUntilFinished: Long) {
|
|
}
|
|
|
|
override fun onFinish() {
|
|
Log.d("onFinish")
|
|
webView.evaluateJavascript("updateStatus()", null)
|
|
}
|
|
}
|
|
timer.start()
|
|
}
|
|
|
|
private fun setWebView() {
|
|
Log.d("setWebView 1")
|
|
WebView.setWebContentsDebuggingEnabled(true)
|
|
Log.d("setWebView 2")
|
|
val settings = webView.settings
|
|
settings.javaScriptEnabled = true
|
|
settings.domStorageEnabled = true
|
|
settings.allowFileAccess = true
|
|
Log.d("setWebView 4")
|
|
webView.webViewClient = object : WebViewClient() {
|
|
override fun onLoadResource(view: WebView, url: String) {
|
|
if (url.contains("https://image.crisp.chat/avatar/website") || url.contains("https://client.crisp.chat/static/javascripts/locales")) {
|
|
webView.evaluateJavascript("updateStatus()", null);
|
|
}
|
|
// Log.e("data", "==$url")
|
|
}
|
|
}
|
|
Log.d("setWebView 5")
|
|
// webView.webChromeClient = object : WebChromeClient() {
|
|
// override fun onProgressChanged(view: WebView?, newProgress: Int) {
|
|
//// Log.e("data", "==$newProgress")
|
|
// }
|
|
// }
|
|
|
|
when {
|
|
BuildConfig.is_ym -> {
|
|
ymKefu()
|
|
}
|
|
|
|
BuildConfig.is_tz -> {
|
|
getTzKefu()
|
|
}
|
|
|
|
BuildConfig.is_yunti -> {
|
|
getYunTiKefu()
|
|
}
|
|
|
|
else -> {
|
|
getBzyKefu()
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private var kefuHost = ""
|
|
private fun ymKefu() {
|
|
val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")
|
|
var enNmae = URLEncoder.encode(userName, "UTF-8")
|
|
Log.d("enNmae==>${enNmae}")
|
|
if (TextUtils.isEmpty(kefuHost)) {
|
|
var mmkvHost = MMKV.defaultMMKV()
|
|
.decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "")
|
|
// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}")
|
|
webViewAtyVM.getYmKefuHost(object : AsyncBodyCallback {
|
|
override suspend fun suc(str: String) {
|
|
// com.cncat.vpn.common.log.Log.d("str==>${str}")
|
|
if (str != mmkvHost) {
|
|
MMKV.defaultMMKV()
|
|
.encode(BZYConstants.MMKV_KEY_KEFU_HOST, str)
|
|
}
|
|
// mmkvHost = str
|
|
kefuHost = str
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(str + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
|
|
override fun err() {
|
|
if (!TextUtils.isEmpty(mmkvHost)) {
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(mmkvHost + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
}
|
|
|
|
})
|
|
} else {
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(kefuHost + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
}
|
|
|
|
private fun getBzyKefu() {
|
|
val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")
|
|
var enNmae = URLEncoder.encode(userName, "UTF-8")
|
|
Log.d("enNmae==>${enNmae}")
|
|
if (TextUtils.isEmpty(kefuHost)) {
|
|
var mmkvHost = MMKV.defaultMMKV()
|
|
.decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "")
|
|
// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}")
|
|
webViewAtyVM.getBzyKefuHost(object : AsyncBodyCallback {
|
|
override suspend fun suc(str: String) {
|
|
// com.cncat.vpn.common.log.Log.d("str==>${str}")
|
|
if (str != mmkvHost) {
|
|
MMKV.defaultMMKV()
|
|
.encode(BZYConstants.MMKV_KEY_KEFU_HOST, str)
|
|
}
|
|
// mmkvHost = str
|
|
kefuHost = str
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(str + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
|
|
override fun err() {
|
|
if (!TextUtils.isEmpty(mmkvHost)) {
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(mmkvHost + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
}
|
|
|
|
})
|
|
} else {
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(kefuHost + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
}
|
|
|
|
private fun getTzKefu() {
|
|
val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")
|
|
var enNmae = URLEncoder.encode(userName, "UTF-8")
|
|
Log.d("enNmae==>${enNmae}")
|
|
if (TextUtils.isEmpty(kefuHost)) {
|
|
var mmkvHost = MMKV.defaultMMKV()
|
|
.decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "")
|
|
// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}")
|
|
webViewAtyVM.getTzKefuHost(object : AsyncBodyCallback {
|
|
override suspend fun suc(str: String) {
|
|
// com.cncat.vpn.common.log.Log.d("str==>${str}")
|
|
if (str != mmkvHost) {
|
|
MMKV.defaultMMKV()
|
|
.encode(BZYConstants.MMKV_KEY_KEFU_HOST, str)
|
|
}
|
|
// mmkvHost = str
|
|
kefuHost = str
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(str + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
|
|
override fun err() {
|
|
if (!TextUtils.isEmpty(mmkvHost)) {
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(mmkvHost + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
}
|
|
|
|
})
|
|
} else {
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(kefuHost + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
}
|
|
|
|
private fun getYunTiKefu() {
|
|
val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")
|
|
var enNmae = URLEncoder.encode(userName, "UTF-8")
|
|
Log.d("enNmae==>${enNmae}")
|
|
if (TextUtils.isEmpty(kefuHost)) {
|
|
var mmkvHost = MMKV.defaultMMKV()
|
|
.decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "")
|
|
// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}")
|
|
webViewAtyVM.getYunTiKefuHost(object : AsyncBodyCallback {
|
|
override suspend fun suc(str: String) {
|
|
// com.cncat.vpn.common.log.Log.d("str==>${str}")
|
|
if (str != mmkvHost) {
|
|
MMKV.defaultMMKV()
|
|
.encode(BZYConstants.MMKV_KEY_KEFU_HOST, str)
|
|
}
|
|
kefuHost = str
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(str + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
|
|
override fun err() {
|
|
if (!TextUtils.isEmpty(mmkvHost)) {
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(mmkvHost + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
}
|
|
|
|
})
|
|
} else {
|
|
startActivity(
|
|
Intent(
|
|
Intent.ACTION_VIEW,
|
|
Uri.parse(kefuHost + "&app_account=${enNmae}")
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
}
|
|
} |