|
|
@ -152,6 +152,7 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var dialogDoMainChoose: DialogDoMainChoose? = null
|
var dialogDoMainChoose: DialogDoMainChoose? = null
|
||||||
override fun httpFailure(httpStatus: HttpStatus.Failure) {
|
override fun httpFailure(httpStatus: HttpStatus.Failure) {
|
||||||
super.httpFailure(httpStatus)
|
super.httpFailure(httpStatus)
|
||||||
|
|
@ -159,10 +160,10 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
||||||
SplashHelper(splashAtyVM).getHostWithFallback { success ->
|
SplashHelper(splashAtyVM).getHostWithFallback { success ->
|
||||||
MainScope().launch {
|
MainScope().launch {
|
||||||
if (success) {
|
if (success) {
|
||||||
if (dialogDoMainChoose==null) {
|
if (dialogDoMainChoose == null) {
|
||||||
dialogDoMainChoose = DialogDoMainChoose(this@LoginActivity)
|
dialogDoMainChoose = DialogDoMainChoose(this@LoginActivity)
|
||||||
}
|
}
|
||||||
if (dialogDoMainChoose?.isShowing==false) {
|
if (dialogDoMainChoose?.isShowing == false) {
|
||||||
dialogDoMainChoose?.setOnTryButtonListener(object :
|
dialogDoMainChoose?.setOnTryButtonListener(object :
|
||||||
DialogDoMainChoose.OnTryButtonListener {
|
DialogDoMainChoose.OnTryButtonListener {
|
||||||
override fun tryButton() {
|
override fun tryButton() {
|
||||||
|
|
@ -179,7 +180,7 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
||||||
})
|
})
|
||||||
dialogDoMainChoose?.show()
|
dialogDoMainChoose?.show()
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
if (::rxDialogShapeLoading.isInitialized && rxDialogShapeLoading.isShowing) {
|
if (::rxDialogShapeLoading.isInitialized && rxDialogShapeLoading.isShowing) {
|
||||||
rxDialogShapeLoading.cancel()
|
rxDialogShapeLoading.cancel()
|
||||||
}
|
}
|
||||||
|
|
@ -455,8 +456,49 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
||||||
R.id.tv_register -> {
|
R.id.tv_register -> {
|
||||||
// val intent = Intent(applicationContext, RegisterActivity::class.java)
|
// val intent = Intent(applicationContext, RegisterActivity::class.java)
|
||||||
// startActivityForResult(intent, LOGIN_TO_REGISTER_REQUEST_CODE)
|
// startActivityForResult(intent, LOGIN_TO_REGISTER_REQUEST_CODE)
|
||||||
//
|
|
||||||
if (TextUtils.isEmpty(registerHost)) {
|
if (TextUtils.isEmpty(registerHost)) {
|
||||||
|
if (BuildConfig.is_tz) {
|
||||||
|
getTzRegister()
|
||||||
|
} else {
|
||||||
|
if (BuildConfig.is_ym) {
|
||||||
|
getYmRegister()
|
||||||
|
} else {
|
||||||
|
getBzyRegister()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(registerHost)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.tv_kefu -> {
|
||||||
|
var mmkvHost = MMKV.defaultMMKV()
|
||||||
|
.decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "")
|
||||||
|
if (TextUtils.isEmpty(kefuHost)) {
|
||||||
|
if (BuildConfig.is_tz) {
|
||||||
|
getTzKefu(mmkvHost)
|
||||||
|
} else {
|
||||||
|
if (BuildConfig.is_ym) {
|
||||||
|
getYmKefu(mmkvHost)
|
||||||
|
} else {
|
||||||
|
getBzyKefu(mmkvHost)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(kefuHost)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.tv_forget_pwd -> {
|
||||||
|
val intent = Intent(applicationContext, ForGetPwdActivity::class.java)
|
||||||
|
startActivity(intent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getYmRegister() {
|
||||||
var mmkvHost = MMKV.defaultMMKV()
|
var mmkvHost = MMKV.defaultMMKV()
|
||||||
.decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "")
|
.decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "")
|
||||||
// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}")
|
// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}")
|
||||||
|
|
@ -473,8 +515,7 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun err() {
|
override fun err() {
|
||||||
|
if (!TextUtils.isEmpty(mmkvHost)) {
|
||||||
if (TextUtils.isEmpty(mmkvHost)) {
|
|
||||||
startActivity(
|
startActivity(
|
||||||
Intent(
|
Intent(
|
||||||
Intent.ACTION_VIEW,
|
Intent.ACTION_VIEW,
|
||||||
|
|
@ -486,34 +527,84 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
} else {
|
|
||||||
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(registerHost)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getTzRegister() {
|
||||||
}
|
|
||||||
|
|
||||||
R.id.tv_kefu -> {
|
|
||||||
|
|
||||||
if (TextUtils.isEmpty(kefuHost)) {
|
|
||||||
var mmkvHost = MMKV.defaultMMKV()
|
var mmkvHost = MMKV.defaultMMKV()
|
||||||
.decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "")
|
.decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "")
|
||||||
// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}")
|
// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}")
|
||||||
loginViewMode.getKefuHost(object : AsyncBodyCallback {
|
loginViewMode.getTzRegisterHost(object : AsyncBodyCallback {
|
||||||
override suspend fun suc(str: String) {
|
override suspend fun suc(str: String) {
|
||||||
// com.cncat.vpn.common.log.Log.d("str==>${str}")
|
// com.cncat.vpn.common.log.Log.d("str==>${str}")
|
||||||
if (str != mmkvHost) {
|
if (str != mmkvHost) {
|
||||||
MMKV.defaultMMKV()
|
MMKV.defaultMMKV()
|
||||||
.encode(BZYConstants.MMKV_KEY_KEFU_HOST, str)
|
.encode(BZYConstants.MMKV_KEY_REGISTER_HOST, str)
|
||||||
}
|
}
|
||||||
// mmkvHost = str
|
// mmkvHost = str
|
||||||
|
registerHost = str
|
||||||
|
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str)))
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun err() {
|
||||||
|
if (!TextUtils.isEmpty(mmkvHost)) {
|
||||||
|
startActivity(
|
||||||
|
Intent(
|
||||||
|
Intent.ACTION_VIEW,
|
||||||
|
Uri.parse(mmkvHost)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getBzyRegister() {
|
||||||
|
var mmkvHost = MMKV.defaultMMKV()
|
||||||
|
.decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "")
|
||||||
|
// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}")
|
||||||
|
loginViewMode.getBzyRegisterHost(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_REGISTER_HOST, str)
|
||||||
|
}
|
||||||
|
// mmkvHost = str
|
||||||
|
registerHost = str
|
||||||
|
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str)))
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun err() {
|
||||||
|
if (!TextUtils.isEmpty(mmkvHost)) {
|
||||||
|
startActivity(
|
||||||
|
Intent(
|
||||||
|
Intent.ACTION_VIEW,
|
||||||
|
Uri.parse(mmkvHost)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun getYmKefu(mmkvHost: String?) {
|
||||||
|
loginViewMode.getYmKefuHost(object : AsyncBodyCallback {
|
||||||
|
override suspend fun suc(str: String) {
|
||||||
|
if (str != mmkvHost) {
|
||||||
|
MMKV.defaultMMKV()
|
||||||
|
.encode(BZYConstants.MMKV_KEY_KEFU_HOST, str)
|
||||||
|
}
|
||||||
kefuHost = str
|
kefuHost = str
|
||||||
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str)))
|
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str)))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun err() {
|
override fun err() {
|
||||||
|
if (!TextUtils.isEmpty(mmkvHost)) {
|
||||||
if (TextUtils.isEmpty(mmkvHost)) {
|
|
||||||
startActivity(
|
startActivity(
|
||||||
Intent(
|
Intent(
|
||||||
Intent.ACTION_VIEW,
|
Intent.ACTION_VIEW,
|
||||||
|
|
@ -521,22 +612,56 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
} else {
|
|
||||||
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(kefuHost)))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.tv_forget_pwd -> {
|
private fun getBzyKefu(mmkvHost: String?) {
|
||||||
val intent = Intent(applicationContext, ForGetPwdActivity::class.java)
|
loginViewMode.getBzyKefuHost(object : AsyncBodyCallback {
|
||||||
startActivity(intent)
|
override suspend fun suc(str: String) {
|
||||||
}
|
if (str != mmkvHost) {
|
||||||
|
MMKV.defaultMMKV()
|
||||||
|
.encode(BZYConstants.MMKV_KEY_KEFU_HOST, str)
|
||||||
}
|
}
|
||||||
|
kefuHost = str
|
||||||
|
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun err() {
|
||||||
|
if (!TextUtils.isEmpty(mmkvHost)) {
|
||||||
|
startActivity(
|
||||||
|
Intent(
|
||||||
|
Intent.ACTION_VIEW,
|
||||||
|
Uri.parse(mmkvHost)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getTzKefu(mmkvHost: String?) {
|
||||||
|
loginViewMode.getTzKefuHost(object : AsyncBodyCallback {
|
||||||
|
override suspend fun suc(str: String) {
|
||||||
|
if (str != mmkvHost) {
|
||||||
|
MMKV.defaultMMKV()
|
||||||
|
.encode(BZYConstants.MMKV_KEY_KEFU_HOST, str)
|
||||||
|
}
|
||||||
|
kefuHost = str
|
||||||
|
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str)))
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun err() {
|
||||||
|
if (!TextUtils.isEmpty(mmkvHost)) {
|
||||||
|
startActivity(
|
||||||
|
Intent(
|
||||||
|
Intent.ACTION_VIEW,
|
||||||
|
Uri.parse(mmkvHost)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import com.tencent.mmkv.MMKV
|
||||||
import com.yingmao.clash.BuildConfig
|
import com.yingmao.clash.BuildConfig
|
||||||
import com.yingmao.clash.conf.BZYConstants
|
import com.yingmao.clash.conf.BZYConstants
|
||||||
import com.yingmao.clash.entity.DomainRsp
|
import com.yingmao.clash.entity.DomainRsp
|
||||||
|
import com.yingmao.clash.listener.AsyncBodyCallback
|
||||||
import com.yingmao.clash.listener.AsyncCallback
|
import com.yingmao.clash.listener.AsyncCallback
|
||||||
import com.yingmao.clash.net.http.HttpReqType
|
import com.yingmao.clash.net.http.HttpReqType
|
||||||
import com.yingmao.clash.util.AESUtil
|
import com.yingmao.clash.util.AESUtil
|
||||||
|
|
@ -34,9 +35,9 @@ open class PublicViewMode : BaseViewMode() {
|
||||||
rt.getHost()
|
rt.getHost()
|
||||||
|
|
||||||
} else if (BuildConfig.is_tz) {
|
} else if (BuildConfig.is_tz) {
|
||||||
rt.getHostTZ()
|
rt.getTzHostTZ()
|
||||||
} else {
|
} else {
|
||||||
rt.getHostDef()
|
rt.getBzyHostDef()
|
||||||
}
|
}
|
||||||
// Log.e("data", "2:$host")
|
// Log.e("data", "2:$host")
|
||||||
host?.takeIf { it.isNotEmpty() }?.let {
|
host?.takeIf { it.isNotEmpty() }?.let {
|
||||||
|
|
@ -68,11 +69,11 @@ open class PublicViewMode : BaseViewMode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildConfig.is_tz -> {
|
BuildConfig.is_tz -> {
|
||||||
rt.getHostTZ()
|
rt.getTzHostGithub()
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
rt.getHostDef()
|
rt.getBzyHostGithub()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
host?.takeIf { it.isNotEmpty() }?.let {
|
host?.takeIf { it.isNotEmpty() }?.let {
|
||||||
|
|
@ -104,11 +105,11 @@ open class PublicViewMode : BaseViewMode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildConfig.is_tz -> {
|
BuildConfig.is_tz -> {
|
||||||
rt.getHostTZ()
|
rt.getTzHostAWS()
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
rt.getHostDef()
|
rt.getBzyHostAWS()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
host?.takeIf { it.isNotEmpty() }?.let {
|
host?.takeIf { it.isNotEmpty() }?.let {
|
||||||
|
|
@ -181,4 +182,45 @@ open class PublicViewMode : BaseViewMode() {
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fun getYmKefuHost(callback: AsyncBodyCallback) {
|
||||||
|
val rt =
|
||||||
|
NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
||||||
|
doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
||||||
|
try { //TODO bug 会引起崩溃
|
||||||
|
var host = rt.getYingMaoKefuHost()
|
||||||
|
callback.suc(host)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
callback.err()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fun getTzKefuHost(callback: AsyncBodyCallback) {
|
||||||
|
val rt =
|
||||||
|
NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
||||||
|
doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
||||||
|
try { //TODO bug 会引起崩溃
|
||||||
|
var host = rt.getTaiZiKefuHost()
|
||||||
|
callback.suc(host)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
callback.err()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun getBzyKefuHost(callback: AsyncBodyCallback) {
|
||||||
|
val rt =
|
||||||
|
NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
||||||
|
doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
||||||
|
try { //TODO bug 会引起崩溃
|
||||||
|
var host = rt.getBzyKefuHost()
|
||||||
|
callback.suc(host)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
callback.err()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -50,6 +50,7 @@ import com.yingmao.clash.act.LoginActivity
|
||||||
import com.yingmao.clash.act.LossPreventionActivity
|
import com.yingmao.clash.act.LossPreventionActivity
|
||||||
import com.yingmao.clash.act.ShareActivity
|
import com.yingmao.clash.act.ShareActivity
|
||||||
import com.yingmao.clash.act.SplashActivity
|
import com.yingmao.clash.act.SplashActivity
|
||||||
|
import com.yingmao.clash.act.SplashHelper
|
||||||
import com.yingmao.clash.act.UIMainActivity
|
import com.yingmao.clash.act.UIMainActivity
|
||||||
import com.yingmao.clash.act.UIMainActivity.Companion.isSubed
|
import com.yingmao.clash.act.UIMainActivity.Companion.isSubed
|
||||||
import com.yingmao.clash.act.UIMainActivity.Companion.newUuid
|
import com.yingmao.clash.act.UIMainActivity.Companion.newUuid
|
||||||
|
|
@ -74,6 +75,7 @@ import com.yingmao.clash.util.DataUtils
|
||||||
import com.yingmao.clash.util.DataUtils.getAllFilePath
|
import com.yingmao.clash.util.DataUtils.getAllFilePath
|
||||||
import com.yingmao.clash.view.RxToast
|
import com.yingmao.clash.view.RxToast
|
||||||
import com.yingmao.clash.view.adapter.LanguageAdapter
|
import com.yingmao.clash.view.adapter.LanguageAdapter
|
||||||
|
import com.yingmao.clash.view.dialog.DialogDoMainChoose
|
||||||
import com.yingmao.clash.view.dialog.DialogNotice
|
import com.yingmao.clash.view.dialog.DialogNotice
|
||||||
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
||||||
import com.yingmao.clash.vm.MainAtyVM
|
import com.yingmao.clash.vm.MainAtyVM
|
||||||
|
|
@ -81,6 +83,7 @@ import com.yingmao.clash.webview.BZYWebViewKeFu
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
|
import kotlinx.coroutines.MainScope
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
@ -171,8 +174,8 @@ class SettingFragment: BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
|
||||||
|
|
||||||
view.findViewById<TextView>(R.id.tvUploadErrorLog).text = requireActivity().resources.getString(R.string.UploadErrorLog)
|
view.findViewById<TextView>(R.id.tvUploadErrorLog).text = requireActivity().resources.getString(R.string.UploadErrorLog)
|
||||||
view.findViewById<TextView>(R.id.tvUploadErrorLogStr).text = requireActivity().resources.getString(R.string.UploadErrorLog)
|
view.findViewById<TextView>(R.id.tvUploadErrorLogStr).text = requireActivity().resources.getString(R.string.UploadErrorLog)
|
||||||
view.findViewById<TextView>(R.id.tvSubApplicationProxy).text = requireActivity().resources.getString(R.string.SubApplicationProxy)
|
view.findViewById<TextView>(R.id.tvSubApplicationProxy).text = requireActivity().resources.getString(R.string.source_switch)
|
||||||
view.findViewById<TextView>(R.id.tvSubApplicationProxyStr).text = requireActivity().resources.getString(R.string.SubApplicationProxyStr)
|
view.findViewById<TextView>(R.id.tvSubApplicationProxyStr).text = requireActivity().resources.getString(R.string.source_switch_str)
|
||||||
|
|
||||||
view.findViewById<TextView>(R.id.tvLanguageSwitching).text = requireActivity().resources.getString(R.string.LanguageSwitching)
|
view.findViewById<TextView>(R.id.tvLanguageSwitching).text = requireActivity().resources.getString(R.string.LanguageSwitching)
|
||||||
view.findViewById<TextView>(R.id.tvLanguageSwitchingStr).text = requireActivity().resources.getString(R.string.LanguageSwitchingStr)
|
view.findViewById<TextView>(R.id.tvLanguageSwitchingStr).text = requireActivity().resources.getString(R.string.LanguageSwitchingStr)
|
||||||
|
|
@ -332,7 +335,9 @@ class SettingFragment: BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
clSubApplicationProxy.setOnClickListener {
|
clSubApplicationProxy.setOnClickListener {
|
||||||
startActivity(Intent(requireActivity(), InstallApplicationActivity::class.java))
|
//改成备用切换
|
||||||
|
// startActivity(Intent(requireActivity(), InstallApplicationActivity::class.java))
|
||||||
|
showDomainList()
|
||||||
}
|
}
|
||||||
clApplicationLanguage.setOnClickListener {
|
clApplicationLanguage.setOnClickListener {
|
||||||
val decodeString = MMKV.defaultMMKV().decodeString(BZYConstants.languageInfo, "")
|
val decodeString = MMKV.defaultMMKV().decodeString(BZYConstants.languageInfo, "")
|
||||||
|
|
@ -430,7 +435,38 @@ class SettingFragment: BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
|
||||||
cleanUserInfo()
|
cleanUserInfo()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var dialogDoMainChoose:DialogDoMainChoose? =null
|
||||||
|
private fun showDomainList() {
|
||||||
|
try {
|
||||||
|
SplashHelper(mainAtyVM).getHostWithFallback { success ->
|
||||||
|
MainScope().launch {
|
||||||
|
if (success) {
|
||||||
|
if (dialogDoMainChoose==null) {
|
||||||
|
dialogDoMainChoose = DialogDoMainChoose(activity)
|
||||||
|
}
|
||||||
|
if (dialogDoMainChoose?.isShowing==false) {
|
||||||
|
dialogDoMainChoose?.setOnTryButtonListener(object :
|
||||||
|
DialogDoMainChoose.OnTryButtonListener {
|
||||||
|
override fun tryButton() {
|
||||||
|
RxToast.info(getString(R.string.StorageSuccessful))
|
||||||
|
dialogDoMainChoose?.dismiss()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun cancel() {
|
||||||
|
|
||||||
|
dialogDoMainChoose?.dismiss()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
dialogDoMainChoose?.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
@SuppressLint("SimpleDateFormat")
|
@SuppressLint("SimpleDateFormat")
|
||||||
fun setExpireDate() {
|
fun setExpireDate() {
|
||||||
val isExpire = checkExpire()
|
val isExpire = checkExpire()
|
||||||
|
|
|
||||||
|
|
@ -169,17 +169,35 @@ interface HttpApi {
|
||||||
suspend fun getHostGithub(): String
|
suspend fun getHostGithub(): String
|
||||||
//八爪鱼
|
//八爪鱼
|
||||||
@GET("/hostdef.txt")
|
@GET("/hostdef.txt")
|
||||||
suspend fun getHostDef(): String
|
suspend fun getBzyHostDef(): String
|
||||||
|
@GET("/hostdef.txt")
|
||||||
|
suspend fun getBzyHostAWS(): String
|
||||||
|
@GET("/ym-source/ym/main/hostdef.txt")
|
||||||
|
suspend fun getBzyHostGithub(): String
|
||||||
//太子
|
//太子
|
||||||
@GET("/hosttaizi.txt")
|
@GET("/hosttaizi.txt")
|
||||||
suspend fun getHostTZ(): String
|
suspend fun getTzHostTZ(): String
|
||||||
|
@GET("/hosttaizi.txt")
|
||||||
|
suspend fun getTzHostAWS(): String
|
||||||
|
@GET("/ym-source/ym/main/hosttaizi.txt")
|
||||||
|
suspend fun getTzHostGithub(): String
|
||||||
|
|
||||||
//注册链接
|
//注册链接
|
||||||
@GET("/ymregister.txt")
|
@GET("/ymregister.txt")
|
||||||
suspend fun getRegister(): String
|
suspend fun getYmRegister(): String
|
||||||
|
@GET("/taiziregister.txt")
|
||||||
|
suspend fun getTzRegister(): String
|
||||||
|
@GET("/bzyregister.txt")
|
||||||
|
suspend fun getBzyRegister(): String
|
||||||
//客服链接
|
//客服链接
|
||||||
@GET("/ymkefu.txt")
|
@GET("/ymkefu.txt")
|
||||||
suspend fun getKefuHost(): String
|
suspend fun getYingMaoKefuHost(): String
|
||||||
|
|
||||||
|
@GET("/taizi_kefu.txt")
|
||||||
|
suspend fun getTaiZiKefuHost(): String
|
||||||
|
|
||||||
|
@GET("/bzy_kefu.txt")
|
||||||
|
suspend fun getBzyKefuHost(): String
|
||||||
// @Headers(
|
// @Headers(
|
||||||
// "User-Agent: Octopus_Android"
|
// "User-Agent: Octopus_Android"
|
||||||
// )
|
// )
|
||||||
|
|
|
||||||
|
|
@ -99,14 +99,7 @@ class LoginAtyVM : PublicViewMode() {
|
||||||
NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
||||||
doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
||||||
try { //TODO bug 会引起崩溃
|
try { //TODO bug 会引起崩溃
|
||||||
|
var host = rt.getYmRegister()
|
||||||
|
|
||||||
var host = rt.getRegister()
|
|
||||||
// Log.e("data", "2:$host")
|
|
||||||
// if (!TextUtils.isEmpty(host)) {
|
|
||||||
// MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_REGISTER_HOST, host)
|
|
||||||
// }
|
|
||||||
// Log.e("data", "22:$host")
|
|
||||||
callback.suc(host)
|
callback.suc(host)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
|
|
@ -114,23 +107,12 @@ class LoginAtyVM : PublicViewMode() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fun getTzRegisterHost(callback: AsyncBodyCallback) {
|
||||||
fun getKefuHost(callback: AsyncBodyCallback) {
|
|
||||||
val rt =
|
val rt =
|
||||||
NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
||||||
doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
||||||
try { //TODO bug 会引起崩溃
|
try { //TODO bug 会引起崩溃
|
||||||
|
var host = rt.getTzRegister()
|
||||||
|
|
||||||
var host = rt.getKefuHost()
|
|
||||||
|
|
||||||
// Log.e("data", "2:$host")
|
|
||||||
// if (!TextUtils.isEmpty(host)) {
|
|
||||||
//
|
|
||||||
// MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_REGISTER_HOST, host)
|
|
||||||
// }
|
|
||||||
// Log.e("data", "22:$host")
|
|
||||||
|
|
||||||
callback.suc(host)
|
callback.suc(host)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
|
|
@ -138,4 +120,19 @@ class LoginAtyVM : PublicViewMode() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fun getBzyRegisterHost(callback: AsyncBodyCallback) {
|
||||||
|
val rt =
|
||||||
|
NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
||||||
|
doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
||||||
|
try { //TODO bug 会引起崩溃
|
||||||
|
var host = rt.getBzyRegister()
|
||||||
|
callback.suc(host)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
callback.err()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -43,28 +43,28 @@ class SplashAtyVM : PublicViewMode() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getHost(function: () -> Job) {
|
// fun getHost(function: () -> Job) {
|
||||||
NetService.instances
|
// NetService.instances
|
||||||
val rt =
|
// val rt =
|
||||||
NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
// NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
||||||
|
//
|
||||||
doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
// doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
||||||
try { //TODO bug 会引起崩溃
|
// try { //TODO bug 会引起崩溃
|
||||||
val host = if (BuildConfig.is_ym) {
|
// val host = if (BuildConfig.is_ym) {
|
||||||
rt.getHost()
|
// rt.getHost()
|
||||||
} else {
|
// } else {
|
||||||
rt.getHostDef()
|
// rt.getHostDef()
|
||||||
}
|
// }
|
||||||
if (!TextUtils.isEmpty(host)) {
|
// if (!TextUtils.isEmpty(host)) {
|
||||||
val hostSet = host.split("+").toSet()
|
// val hostSet = host.split("+").toSet()
|
||||||
MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_ROUTER_HOST, hostSet)
|
// MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_ROUTER_HOST, hostSet)
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
} catch (e: Exception) {
|
// } catch (e: Exception) {
|
||||||
e.printStackTrace()
|
// e.printStackTrace()
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,17 +27,17 @@ import retrofit2.Callback
|
||||||
import retrofit2.Response
|
import retrofit2.Response
|
||||||
|
|
||||||
class WebViewAtyVM : PublicViewMode() {
|
class WebViewAtyVM : PublicViewMode() {
|
||||||
fun getKefuHost(callback: AsyncBodyCallback) {
|
// fun getKefuHost(callback: AsyncBodyCallback) {
|
||||||
val rt =
|
// val rt =
|
||||||
NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
// NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/")
|
||||||
doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
// doAsyncNoNeedReturn(HttpReqType.GET_HOST) {
|
||||||
try { //TODO bug 会引起崩溃
|
// try { //TODO bug 会引起崩溃
|
||||||
var host = rt.getKefuHost()
|
// var host = rt.getYingMaoKefuHost()
|
||||||
callback.suc(host)
|
// callback.suc(host)
|
||||||
} catch (e: Exception) {
|
// } catch (e: Exception) {
|
||||||
e.printStackTrace()
|
// e.printStackTrace()
|
||||||
callback.err()
|
// callback.err()
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
@ -85,13 +85,14 @@ class BZYWebViewKeFu : BaseActivity() {
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
if (BuildConfig.is_tz) {
|
if (BuildConfig.is_tz) {
|
||||||
webView.loadUrl("file:///android_asset/TZKeFu.html")
|
// webView.loadUrl("file:///android_asset/TZKeFu.html")
|
||||||
|
getTzKefu()
|
||||||
} else {
|
} else {
|
||||||
if (BuildConfig.is_ym) {
|
if (BuildConfig.is_ym) {
|
||||||
ymKefu()
|
ymKefu()
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
webView.loadUrl("file:///android_asset/kefu.html")
|
// webView.loadUrl("file:///android_asset/kefu.html")
|
||||||
|
getBzyKefu()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -106,7 +107,7 @@ class BZYWebViewKeFu : BaseActivity() {
|
||||||
var mmkvHost = MMKV.defaultMMKV()
|
var mmkvHost = MMKV.defaultMMKV()
|
||||||
.decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "")
|
.decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "")
|
||||||
// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}")
|
// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}")
|
||||||
webViewAtyVM.getKefuHost(object : AsyncBodyCallback {
|
webViewAtyVM.getYmKefuHost(object : AsyncBodyCallback {
|
||||||
override suspend fun suc(str: String) {
|
override suspend fun suc(str: String) {
|
||||||
// com.cncat.vpn.common.log.Log.d("str==>${str}")
|
// com.cncat.vpn.common.log.Log.d("str==>${str}")
|
||||||
if (str != mmkvHost) {
|
if (str != mmkvHost) {
|
||||||
|
|
@ -125,7 +126,105 @@ class BZYWebViewKeFu : BaseActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun err() {
|
override fun err() {
|
||||||
if (TextUtils.isEmpty(mmkvHost)) {
|
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(
|
startActivity(
|
||||||
Intent(
|
Intent(
|
||||||
Intent.ACTION_VIEW,
|
Intent.ACTION_VIEW,
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 290 KiB After Width: | Height: | Size: 261 KiB |
|
|
@ -922,7 +922,7 @@
|
||||||
android:id="@+id/tvSubApplicationProxy"
|
android:id="@+id/tvSubApplicationProxy"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/SubApplicationProxy"
|
android:text="@string/source_switch"
|
||||||
android:textColor="@color/gray_828282"
|
android:textColor="@color/gray_828282"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
|
|
@ -931,7 +931,7 @@
|
||||||
android:id="@+id/tvSubApplicationProxyStr"
|
android:id="@+id/tvSubApplicationProxyStr"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/SubApplicationProxyStr"
|
android:text="@string/source_switch_str"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:textColor="@color/gray_828282"
|
android:textColor="@color/gray_828282"
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.1 KiB |
|
|
@ -2,6 +2,7 @@
|
||||||
<string name="app_name">八爪鱼</string>
|
<string name="app_name">八爪鱼</string>
|
||||||
<string name="app_name_backcn">波斯猫回国加速器</string>
|
<string name="app_name_backcn">波斯猫回国加速器</string>
|
||||||
<string name="app_name_gz">影猫</string>
|
<string name="app_name_gz">影猫</string>
|
||||||
|
<string name="app_name_gz2">影猫加速器</string>
|
||||||
<string name="app_name_taizi">太子VPN</string>
|
<string name="app_name_taizi">太子VPN</string>
|
||||||
<string name="file">file</string>
|
<string name="file">file</string>
|
||||||
<string name="rule">rule</string>
|
<string name="rule">rule</string>
|
||||||
|
|
@ -106,6 +107,7 @@
|
||||||
<string name="reminder">reminder</string>
|
<string name="reminder">reminder</string>
|
||||||
<string name="UploadErrorLog">Upload error log</string>
|
<string name="UploadErrorLog">Upload error log</string>
|
||||||
<string name="SubApplicationProxy">Sub application proxy</string>
|
<string name="SubApplicationProxy">Sub application proxy</string>
|
||||||
|
<string name="source_switch">Source switching</string>
|
||||||
<string name="SelectAll">Select All</string>
|
<string name="SelectAll">Select All</string>
|
||||||
<string name="LanguageSwitching">Application language</string>
|
<string name="LanguageSwitching">Application language</string>
|
||||||
<string name="LanguageChinese">Simplified Chinese</string>
|
<string name="LanguageChinese">Simplified Chinese</string>
|
||||||
|
|
@ -160,6 +162,7 @@
|
||||||
<string name="downloadEmpty">The download address is empty</string>
|
<string name="downloadEmpty">The download address is empty</string>
|
||||||
<string name="NewVersion">New version detected, please update</string>
|
<string name="NewVersion">New version detected, please update</string>
|
||||||
<string name="downloading">Downloading</string>
|
<string name="downloading">Downloading</string>
|
||||||
|
<string name="download">Downloading</string>
|
||||||
<string name="giveMyPermission">Please grant storage permission, otherwise the file cannot be downloaded</string>
|
<string name="giveMyPermission">Please grant storage permission, otherwise the file cannot be downloaded</string>
|
||||||
<string name="CopyToClipboard">Copy to clipboard</string>
|
<string name="CopyToClipboard">Copy to clipboard</string>
|
||||||
<string name="StopAccelerating">Stop accelerating</string>
|
<string name="StopAccelerating">Stop accelerating</string>
|
||||||
|
|
@ -331,6 +334,7 @@ Service Description\n
|
||||||
<string name="SignIn">Sign in</string>
|
<string name="SignIn">Sign in</string>
|
||||||
<string name="InitializationRepairStr">Repair application</string>
|
<string name="InitializationRepairStr">Repair application</string>
|
||||||
<string name="SubApplicationProxyStr">Set proxy for application</string>
|
<string name="SubApplicationProxyStr">Set proxy for application</string>
|
||||||
|
<string name="source_switch_str">Fix network anomalies</string>
|
||||||
<string name="LanguageSwitchingStr">Switch application language</string>
|
<string name="LanguageSwitchingStr">Switch application language</string>
|
||||||
<string name="TelegramStr">Join Telegram group</string>
|
<string name="TelegramStr">Join Telegram group</string>
|
||||||
<string name="OnlineCustomerService">Customer Service</string>
|
<string name="OnlineCustomerService">Customer Service</string>
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
<string name="app_name">八爪魚</string>
|
<string name="app_name">八爪魚</string>
|
||||||
<string name="app_name_backcn">波斯貓回國加速器</string>
|
<string name="app_name_backcn">波斯貓回國加速器</string>
|
||||||
<string name="app_name_gz">影貓</string>
|
<string name="app_name_gz">影貓</string>
|
||||||
|
<string name="app_name_gz2">影猫加速器</string>
|
||||||
<string name="app_name_taizi">太子VPN</string>
|
<string name="app_name_taizi">太子VPN</string>
|
||||||
<string name="file">文件</string>
|
<string name="file">文件</string>
|
||||||
<string name="rule">規則</string>
|
<string name="rule">規則</string>
|
||||||
|
|
@ -106,6 +107,7 @@
|
||||||
<string name="reminder">温馨提示</string>
|
<string name="reminder">温馨提示</string>
|
||||||
<string name="UploadErrorLog">上傳錯誤日志</string>
|
<string name="UploadErrorLog">上傳錯誤日志</string>
|
||||||
<string name="SubApplicationProxy">分應用代理</string>
|
<string name="SubApplicationProxy">分應用代理</string>
|
||||||
|
<string name="source_switch">源切換</string>
|
||||||
<string name="SelectAll">全部選取</string>
|
<string name="SelectAll">全部選取</string>
|
||||||
<string name="LanguageSwitching">應用語言</string>
|
<string name="LanguageSwitching">應用語言</string>
|
||||||
<string name="LanguageChinese">簡體中文</string>
|
<string name="LanguageChinese">簡體中文</string>
|
||||||
|
|
@ -159,6 +161,7 @@
|
||||||
<string name="downloadEmpty">下載地址爲空</string>
|
<string name="downloadEmpty">下載地址爲空</string>
|
||||||
<string name="NewVersion">檢測到新版本,請更新.</string>
|
<string name="NewVersion">檢測到新版本,請更新.</string>
|
||||||
<string name="downloading">正在下載...</string>
|
<string name="downloading">正在下載...</string>
|
||||||
|
<string name="download">正在下載</string>
|
||||||
<string name="giveMyPermission">請授予存儲權限,否則無法下載文件</string>
|
<string name="giveMyPermission">請授予存儲權限,否則無法下載文件</string>
|
||||||
<string name="CopyToClipboard">已複製到剪切闆</string>
|
<string name="CopyToClipboard">已複製到剪切闆</string>
|
||||||
<string name="StopAccelerating">停止加速?</string>
|
<string name="StopAccelerating">停止加速?</string>
|
||||||
|
|
@ -321,6 +324,7 @@
|
||||||
<string name="SignIn">簽到</string>
|
<string name="SignIn">簽到</string>
|
||||||
<string name="InitializationRepairStr">修復應用</string>
|
<string name="InitializationRepairStr">修復應用</string>
|
||||||
<string name="SubApplicationProxyStr">為應用設置代理</string>
|
<string name="SubApplicationProxyStr">為應用設置代理</string>
|
||||||
|
<string name="source_switch_str">修復網絡异常</string>
|
||||||
<string name="LanguageSwitchingStr">切換應用語言</string>
|
<string name="LanguageSwitchingStr">切換應用語言</string>
|
||||||
<string name="TelegramStr">加入電報群</string>
|
<string name="TelegramStr">加入電報群</string>
|
||||||
<string name="OnlineCustomerService">在線客服</string>
|
<string name="OnlineCustomerService">在線客服</string>
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
<string name="app_name_backcn">波斯貓回國加速器</string>
|
<string name="app_name_backcn">波斯貓回國加速器</string>
|
||||||
<string name="app_name_gz">影貓</string>
|
<string name="app_name_gz">影貓</string>
|
||||||
|
|
||||||
|
<string name="app_name_gz2">影猫加速器</string>
|
||||||
<string name="app_name_taizi">太子</string>
|
<string name="app_name_taizi">太子</string>
|
||||||
<string name="file">文件</string>
|
<string name="file">文件</string>
|
||||||
<string name="rule">規則</string>
|
<string name="rule">規則</string>
|
||||||
|
|
@ -107,6 +108,7 @@
|
||||||
<string name="reminder">温馨提示</string>
|
<string name="reminder">温馨提示</string>
|
||||||
<string name="UploadErrorLog">上傳錯誤日志</string>
|
<string name="UploadErrorLog">上傳錯誤日志</string>
|
||||||
<string name="SubApplicationProxy">分應用代理</string>
|
<string name="SubApplicationProxy">分應用代理</string>
|
||||||
|
<string name="source_switch">源切換</string>
|
||||||
<string name="SelectAll">全部選取</string>
|
<string name="SelectAll">全部選取</string>
|
||||||
<string name="LanguageSwitching">應用語言</string>
|
<string name="LanguageSwitching">應用語言</string>
|
||||||
<string name="LanguageChinese">簡體中文</string>
|
<string name="LanguageChinese">簡體中文</string>
|
||||||
|
|
@ -160,6 +162,7 @@
|
||||||
<string name="downloadEmpty">下載地址爲空</string>
|
<string name="downloadEmpty">下載地址爲空</string>
|
||||||
<string name="NewVersion">檢測到新版本,請更新.</string>
|
<string name="NewVersion">檢測到新版本,請更新.</string>
|
||||||
<string name="downloading">正在下載...</string>
|
<string name="downloading">正在下載...</string>
|
||||||
|
<string name="download">正在下載</string>
|
||||||
<string name="giveMyPermission">請授予存儲權限,否則無法下載文件</string>
|
<string name="giveMyPermission">請授予存儲權限,否則無法下載文件</string>
|
||||||
<string name="CopyToClipboard">已複製到剪切闆</string>
|
<string name="CopyToClipboard">已複製到剪切闆</string>
|
||||||
<string name="StopAccelerating">停止加速?</string>
|
<string name="StopAccelerating">停止加速?</string>
|
||||||
|
|
@ -320,6 +323,7 @@
|
||||||
<string name="SignIn">簽到</string>
|
<string name="SignIn">簽到</string>
|
||||||
<string name="InitializationRepairStr">修復應用</string>
|
<string name="InitializationRepairStr">修復應用</string>
|
||||||
<string name="SubApplicationProxyStr">為應用設置代理</string>
|
<string name="SubApplicationProxyStr">為應用設置代理</string>
|
||||||
|
<string name="source_switch_str">修復網絡异常</string>
|
||||||
<string name="LanguageSwitchingStr">切換應用語言</string>
|
<string name="LanguageSwitchingStr">切換應用語言</string>
|
||||||
<string name="TelegramStr">加入電報群</string>
|
<string name="TelegramStr">加入電報群</string>
|
||||||
<string name="OnlineCustomerService">在線客服</string>
|
<string name="OnlineCustomerService">在線客服</string>
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,7 @@
|
||||||
<string name="reminder">温馨提示</string>
|
<string name="reminder">温馨提示</string>
|
||||||
<string name="UploadErrorLog">上传错误日志</string>
|
<string name="UploadErrorLog">上传错误日志</string>
|
||||||
<string name="SubApplicationProxy">分应用代理</string>
|
<string name="SubApplicationProxy">分应用代理</string>
|
||||||
|
<string name="source_switch">源切换</string>
|
||||||
<string name="SelectAll">全部选取</string>
|
<string name="SelectAll">全部选取</string>
|
||||||
<string name="LanguageSwitching">应用语言</string>
|
<string name="LanguageSwitching">应用语言</string>
|
||||||
<string name="LanguageChinese">简体中文</string>
|
<string name="LanguageChinese">简体中文</string>
|
||||||
|
|
@ -339,6 +340,7 @@
|
||||||
<string name="SignIn">签到</string>
|
<string name="SignIn">签到</string>
|
||||||
<string name="InitializationRepairStr">修复应用</string>
|
<string name="InitializationRepairStr">修复应用</string>
|
||||||
<string name="SubApplicationProxyStr">为应用设置代理</string>
|
<string name="SubApplicationProxyStr">为应用设置代理</string>
|
||||||
|
<string name="source_switch_str">修复网络异常</string>
|
||||||
<string name="LanguageSwitchingStr">切换应用语言</string>
|
<string name="LanguageSwitchingStr">切换应用语言</string>
|
||||||
<string name="TelegramStr">加入电报群</string>
|
<string name="TelegramStr">加入电报群</string>
|
||||||
<string name="OnlineCustomerService">在线客服</string>
|
<string name="OnlineCustomerService">在线客服</string>
|
||||||
|
|
|
||||||