Merge remote-tracking branch 'refs/remotes/origin/master'
This commit is contained in:
commit
c0b7d7e9d0
|
|
@ -82,7 +82,10 @@ class ActivityActivity : BaseActivity() {
|
|||
override fun onMyItemChildClickListener(itemBean: Activity_) {
|
||||
if (itemBean.redirectLink.contains("BindAccount")) {
|
||||
showBindAccDialog(itemBean)
|
||||
} else {
|
||||
}else if(itemBean.redirectLink.contains("weekcharge")){
|
||||
val intent = Intent(CommonUtils.getApp(), MemberRechargeActivity::class.java)
|
||||
startActivity(intent)
|
||||
}else {
|
||||
showActDialog(itemBean)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
package com.yingmao.clash.act
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.text.Spannable
|
||||
import android.text.SpannableStringBuilder
|
||||
|
|
@ -15,7 +17,9 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.*
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
||||
import com.yingmao.clash.net.http.entity.LoginRsp
|
||||
|
||||
|
|
@ -28,18 +32,23 @@ import com.yingmao.clash.conf.BZYConstants
|
|||
import com.yingmao.clash.entity.CheckLoginRsp
|
||||
import com.yingmao.clash.listener.AsyncBodyCallback
|
||||
import com.yingmao.clash.listener.AsyncCallback
|
||||
import com.yingmao.clash.listener.DownLoadListener
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.HttpStatus
|
||||
import com.yingmao.clash.net.http.entity.AppVersionCheckRsp
|
||||
import com.yingmao.clash.util.AESUtil
|
||||
import com.yingmao.clash.util.CommonUtils
|
||||
import com.yingmao.clash.util.Utils
|
||||
import com.yingmao.clash.view.PasswordTransformationMethodBigDot
|
||||
import com.yingmao.clash.view.RxToast
|
||||
import com.yingmao.clash.view.dialog.DialogAppVersion
|
||||
import com.yingmao.clash.view.dialog.DialogDoMainChoose
|
||||
import com.yingmao.clash.vm.LoginAtyVM
|
||||
import com.yingmao.clash.vm.SplashAtyVM
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.File
|
||||
|
||||
class LoginActivity : BaseActivity(), View.OnClickListener {
|
||||
private lateinit var loginViewMode: LoginAtyVM
|
||||
|
|
@ -73,6 +82,7 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
|||
splashAtyVM = ViewModelProvider(this).get(SplashAtyVM::class.java)
|
||||
observe(this, loginViewMode)
|
||||
initViews()
|
||||
loginViewMode.upgradeVersion()
|
||||
}
|
||||
|
||||
override fun httpLoading(httpStatus: HttpStatus.Loading) {
|
||||
|
|
@ -151,6 +161,23 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
|||
)
|
||||
}
|
||||
}
|
||||
}else if(httpStatus.reqType == HttpReqType.GETAPPVERION){
|
||||
(httpStatus.rsp as AppVersionCheckRsp).let { avcr ->
|
||||
com.cncat.vpn.common.log.Log.i("App_VERION_CHECK ==>$avcr")
|
||||
if (avcr.code == 200) {
|
||||
avcr.data?.let { md ->
|
||||
if (md.isForce) { //强制更新
|
||||
if (!TextUtils.isEmpty(md.versionPath)) {
|
||||
showUpdateDialog(md.versionPath!!, md.illustrate!!, true)
|
||||
}
|
||||
} else if (md.isUpgrade) { //更新
|
||||
if (!TextUtils.isEmpty(md.versionPath)) {
|
||||
showUpdateDialog(md.versionPath!!, md.illustrate!!, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -694,5 +721,78 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
|||
passwordEt.transformationMethod = PasswordTransformationMethodBigDot()
|
||||
}
|
||||
}
|
||||
private fun showUpdateDialog(url: String, illustrate: String, isForce: Boolean) {
|
||||
if (TextUtils.isEmpty(url)) {
|
||||
RxToast.error(resources.getString(R.string.downloadEmpty))
|
||||
return
|
||||
}
|
||||
var notice = illustrate
|
||||
if (TextUtils.isEmpty(illustrate)) {
|
||||
notice = resources.getString(R.string.NewVersion)
|
||||
}
|
||||
var isDownloaded = false;
|
||||
var isFinish = false
|
||||
var downFilePath = ""
|
||||
|
||||
val dialog = DialogAppVersion(this,
|
||||
notice,
|
||||
url,
|
||||
isForce,
|
||||
object : DialogAppVersion.OnClickListener {
|
||||
override fun ok(tv_down: TextView, pb_down: ProgressBar) {
|
||||
if (isFinish) {
|
||||
installApk(downFilePath)
|
||||
return
|
||||
}
|
||||
if (isDownloaded) {
|
||||
RxToast.info(resources.getString(R.string.downloading))
|
||||
return
|
||||
}
|
||||
isDownloaded = true
|
||||
splashAtyVM.downLoadFile(url, object : DownLoadListener {
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun loading(progress: Int) {
|
||||
lifecycleScope.async {
|
||||
pb_down.progress = progress
|
||||
tv_down.text = resources.getString(R.string.download) + "$progress%"
|
||||
}
|
||||
}
|
||||
|
||||
override fun finish(path: String) {
|
||||
com.cncat.vpn.common.log.Log.d("down finish path==>$path")
|
||||
isFinish = true
|
||||
downFilePath = path
|
||||
installApk(path)
|
||||
}
|
||||
|
||||
override fun error(msg: String) {
|
||||
com.cncat.vpn.common.log.Log.d("down error msg==>$msg")
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
override fun cancel() {
|
||||
}
|
||||
})
|
||||
dialog.show()
|
||||
}
|
||||
fun installApk(filePath: String) {
|
||||
val file = File(filePath)
|
||||
val uri: Uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
FileProvider.getUriForFile(this, "${applicationContext.packageName}.fileprovider", file)
|
||||
} else {
|
||||
Uri.fromFile(file)
|
||||
}
|
||||
|
||||
val intent = Intent(Intent.ACTION_VIEW).apply {
|
||||
setDataAndType(uri, "application/vnd.android.package-archive")
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||
}
|
||||
}
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
|
@ -29,6 +29,7 @@ import com.stripe.android.confirmAlipayPayment
|
|||
import com.stripe.android.model.ConfirmPaymentIntentParams
|
||||
import com.stripe.android.model.StripeIntent
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.BuildConfig
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.base.BaseActivity
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
|
|
@ -302,6 +303,25 @@ class MemberRechargeActivity: BaseActivity() {
|
|||
}
|
||||
}
|
||||
}
|
||||
HttpReqType.StripeWeChat ->{
|
||||
(httpStatus.rsp as PayUploadParamData).let {
|
||||
if(it.data!=null){
|
||||
paymentIntentClientSecret= it.data.clientSecret.toString()
|
||||
val serviceUrl = MMKV.defaultMMKV().decodeString(
|
||||
BZYConstants.MMKV_KEY_CURRENT_HOST,
|
||||
BuildConfig.service_url
|
||||
)!!
|
||||
val payUrl=serviceUrl+"/78zccgy0nsgknh9n4/iiii.html?s=${it.data.clientSecret.toString()}"
|
||||
val uri = Uri.parse(payUrl)
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
intent.setData(uri)
|
||||
startActivity(intent)
|
||||
}else{
|
||||
hideLoading()
|
||||
RxToast.info(getString(R.string.NoPaymentReceipt))
|
||||
}
|
||||
}
|
||||
}
|
||||
HttpReqType.CHECK_LOGIN -> {
|
||||
Logger.d("支付成功更新有效期")
|
||||
val checkLoginRsp = httpStatus.rsp
|
||||
|
|
@ -557,6 +577,8 @@ class MemberRechargeActivity: BaseActivity() {
|
|||
findViewById<LinearLayout>(R.id.llStripePay).visibility= View.VISIBLE
|
||||
findViewById<TextView>(R.id.tvStripePay).visibility= View.VISIBLE
|
||||
findViewById<AppCompatImageView>(R.id.ivStripeAlipay).visibility= View.VISIBLE
|
||||
val stripeWechatPay=findViewById<AppCompatImageView>(R.id.ivStripeWechatPay)
|
||||
stripeWechatPay.visibility= View.VISIBLE
|
||||
findViewById<AppCompatImageView>(R.id.ivStripeAlipay).setOnClickListener {
|
||||
if(selectedGradeID!=0){
|
||||
if(!PayUtils.isAlipayInstalled(this@MemberRechargeActivity)){
|
||||
|
|
@ -572,6 +594,15 @@ class MemberRechargeActivity: BaseActivity() {
|
|||
RxToast.info(getString(R.string.NoPaymentReceipt))
|
||||
}
|
||||
}
|
||||
stripeWechatPay.setOnClickListener {
|
||||
if(selectedGradeID!=0){
|
||||
viewModel.getWeChatPayClientSecret(selectedGradeID)
|
||||
dismiss()
|
||||
}else{
|
||||
dismiss()
|
||||
RxToast.info(getString(R.string.NoPaymentReceipt))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
getCustomView().findViewById<AppCompatImageView>(R.id.ivBack).setOnClickListener {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.yingmao.clash.act
|
||||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.graphics.Bitmap
|
||||
|
|
@ -9,14 +10,18 @@ import android.net.Uri
|
|||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.provider.Settings
|
||||
import android.text.TextUtils
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.RelativeLayout
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.afollestad.materialdialogs.customview.customView
|
||||
|
|
@ -45,19 +50,23 @@ import com.yingmao.clash.net.http.entity.RegisterRsp
|
|||
import com.cncat.vpn.service.ClashManager
|
||||
import com.cncat.vpn.service.remote.IClashManager
|
||||
import com.cncat.vpn.service.remote.wrap
|
||||
import com.yingmao.clash.listener.DownLoadListener
|
||||
import com.yingmao.clash.net.http.entity.AppVersionCheckRsp
|
||||
import com.yingmao.clash.net.http.entity.StartingBeans
|
||||
import com.yingmao.clash.util.AESUtil
|
||||
import com.yingmao.clash.util.Utils
|
||||
import com.yingmao.clash.view.RxToast
|
||||
import com.yingmao.clash.view.dialog.DialogAppVersion
|
||||
import com.yingmao.clash.view.dialog.DialogBandChoose
|
||||
import com.yingmao.clash.view.dialog.DialogDoMainChoose
|
||||
import com.yingmao.clash.view.dialog.RxDialogSureCancel
|
||||
import com.yingmao.clash.vm.SplashAtyVM
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.File
|
||||
import java.util.Locale
|
||||
|
||||
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import kotlinx.coroutines.async
|
||||
class SplashActivity : BaseActivity() {
|
||||
|
||||
private val deniedPermissions = hashSetOf<String>()
|
||||
|
|
@ -661,6 +670,32 @@ class SplashActivity : BaseActivity() {
|
|||
}
|
||||
|
||||
}
|
||||
HttpReqType.App_VERION_CHECK->{
|
||||
(httpStatus.rsp as AppVersionCheckRsp).let { avcr ->
|
||||
com.cncat.vpn.common.log.Log.i("App_VERION_CHECK ==>$avcr")
|
||||
if (avcr.code == 200) {
|
||||
avcr.data?.let { md ->
|
||||
if (md.isForce) { //强制更新
|
||||
if (!TextUtils.isEmpty(md.versionPath)) {
|
||||
showUpdateDialog(md.versionPath!!, md.illustrate!!, true)
|
||||
}
|
||||
} else if (md.isUpgrade) { //更新
|
||||
if (!TextUtils.isEmpty(md.versionPath)) {
|
||||
showUpdateDialog(md.versionPath!!, md.illustrate!!, false)
|
||||
}
|
||||
}else{
|
||||
val intent = Intent(this@SplashActivity, UIMainActivity::class.java)
|
||||
startActivity(intent)
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}else{
|
||||
val intent = Intent(this@SplashActivity, UIMainActivity::class.java)
|
||||
startActivity(intent)
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else -> {}
|
||||
}
|
||||
|
|
@ -902,10 +937,8 @@ class SplashActivity : BaseActivity() {
|
|||
}
|
||||
|
||||
private fun toMainPage() {
|
||||
val intent = Intent(this, UIMainActivity::class.java)
|
||||
|
||||
startActivity(intent)
|
||||
finish()
|
||||
//监测版本是否需要更新
|
||||
splashAtyVM.appCheck()
|
||||
}
|
||||
|
||||
private fun toLoginPage() {
|
||||
|
|
@ -922,4 +955,81 @@ class SplashActivity : BaseActivity() {
|
|||
config.locale = locale
|
||||
resources.updateConfiguration(config, metrics)
|
||||
}
|
||||
private fun showUpdateDialog(url: String, illustrate: String, isForce: Boolean) {
|
||||
if (TextUtils.isEmpty(url)) {
|
||||
RxToast.error(resources.getString(R.string.downloadEmpty))
|
||||
return
|
||||
}
|
||||
var notice = illustrate
|
||||
if (TextUtils.isEmpty(illustrate)) {
|
||||
notice = resources.getString(R.string.NewVersion)
|
||||
}
|
||||
var isDownloaded = false;
|
||||
var isFinish = false
|
||||
var downFilePath = ""
|
||||
|
||||
val dialog = DialogAppVersion(this,
|
||||
notice,
|
||||
url,
|
||||
isForce,
|
||||
object : DialogAppVersion.OnClickListener {
|
||||
override fun ok(tv_down: TextView, pb_down: ProgressBar) {
|
||||
if (isFinish) {
|
||||
installApk(downFilePath)
|
||||
return
|
||||
}
|
||||
if (isDownloaded) {
|
||||
RxToast.info(resources.getString(R.string.downloading))
|
||||
return
|
||||
}
|
||||
isDownloaded = true
|
||||
splashAtyVM.downLoadFile(url, object : DownLoadListener {
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun loading(progress: Int) {
|
||||
lifecycleScope.async {
|
||||
pb_down.progress = progress
|
||||
tv_down.text = resources.getString(R.string.download) + "$progress%"
|
||||
}
|
||||
}
|
||||
|
||||
override fun finish(path: String) {
|
||||
com.cncat.vpn.common.log.Log.d("down finish path==>$path")
|
||||
isFinish = true
|
||||
downFilePath = path
|
||||
installApk(path)
|
||||
}
|
||||
|
||||
override fun error(msg: String) {
|
||||
com.cncat.vpn.common.log.Log.d("down error msg==>$msg")
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
override fun cancel() {
|
||||
val intent = Intent(this@SplashActivity, UIMainActivity::class.java)
|
||||
startActivity(intent)
|
||||
finish()
|
||||
}
|
||||
})
|
||||
dialog.show()
|
||||
}
|
||||
fun installApk(filePath: String) {
|
||||
val file = File(filePath)
|
||||
val uri: Uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
FileProvider.getUriForFile(this, "${applicationContext.packageName}.fileprovider", file)
|
||||
} else {
|
||||
Uri.fromFile(file)
|
||||
}
|
||||
|
||||
val intent = Intent(Intent.ACTION_VIEW).apply {
|
||||
setDataAndType(uri, "application/vnd.android.package-archive")
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||
}
|
||||
}
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
|
@ -126,7 +126,6 @@ class UIMainActivity : BaseActivity() {
|
|||
observe(this, mainAtyVM)
|
||||
mainAtyVM.startHeartBeat()
|
||||
MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_GLOBAL_MODEL, false)
|
||||
mainAtyVM.appCheck()
|
||||
mainAtyVM.getAirNodes()
|
||||
val isGlobal = MMKV.defaultMMKV().decodeBool(BZYConstants.MMKV_KEY_GLOBAL_MODEL, false)
|
||||
newMainActGlo = isGlobal
|
||||
|
|
@ -190,25 +189,6 @@ class UIMainActivity : BaseActivity() {
|
|||
|
||||
override fun httpSuccess(httpStatus: HttpStatus.Success) {
|
||||
when (httpStatus.reqType) {
|
||||
HttpReqType.App_VERION_CHECK -> {
|
||||
(httpStatus.rsp as AppVersionCheckRsp).let { avcr ->
|
||||
Log.i("App_VERION_CHECK ==>$avcr")
|
||||
if (avcr.code == 200) {
|
||||
avcr.data?.let { md ->
|
||||
if (md.isForce) { //强制更新
|
||||
if (!TextUtils.isEmpty(md.versionPath)) {
|
||||
showUpdateDialog(md.versionPath!!, md.illustrate!!, true);
|
||||
}
|
||||
} else if (md.isUpgrade) { //更新
|
||||
if (!TextUtils.isEmpty(md.versionPath)) {
|
||||
showUpdateDialog(md.versionPath!!, md.illustrate!!, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HttpReqType.GET_AIRNODES -> {
|
||||
val data = httpStatus.rsp as SubscriptionRsp
|
||||
if (data.code != "1000") {
|
||||
|
|
@ -341,83 +321,6 @@ class UIMainActivity : BaseActivity() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showUpdateDialog(url: String, illustrate: String, isForce: Boolean) {
|
||||
if (TextUtils.isEmpty(url)) {
|
||||
RxToast.error(resources.getString(R.string.downloadEmpty))
|
||||
return
|
||||
}
|
||||
var notice = illustrate
|
||||
if (TextUtils.isEmpty(illustrate)) {
|
||||
notice = resources.getString(R.string.NewVersion)
|
||||
}
|
||||
var isDownloaded = false;
|
||||
var isFinish = false
|
||||
var downFilePath = ""
|
||||
|
||||
val dialog = DialogAppVersion(this@UIMainActivity,
|
||||
notice,
|
||||
url,
|
||||
isForce,
|
||||
object : DialogAppVersion.OnClickListener {
|
||||
override fun ok(tv_down: TextView, pb_down: ProgressBar) {
|
||||
if (isFinish) {
|
||||
installApk(downFilePath)
|
||||
return
|
||||
}
|
||||
if (isDownloaded) {
|
||||
RxToast.info(resources.getString(R.string.downloading))
|
||||
return
|
||||
}
|
||||
isDownloaded = true
|
||||
mainAtyVM.downLoadFile(url, object : DownLoadListener {
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun loading(progress: Int) {
|
||||
lifecycleScope.async {
|
||||
pb_down.progress = progress
|
||||
tv_down.text = resources.getString(R.string.download) + "$progress%"
|
||||
}
|
||||
}
|
||||
|
||||
override fun finish(path: String) {
|
||||
Log.d("down finish path==>$path")
|
||||
isFinish = true
|
||||
downFilePath = path
|
||||
installApk(path)
|
||||
}
|
||||
|
||||
override fun error(msg: String) {
|
||||
Log.d("down error msg==>$msg")
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
override fun cancel() {
|
||||
}
|
||||
})
|
||||
dialog.show()
|
||||
}
|
||||
|
||||
fun installApk(filePath: String) {
|
||||
val file = File(filePath)
|
||||
val uri: Uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
FileProvider.getUriForFile(this, "${applicationContext.packageName}.fileprovider", file)
|
||||
} else {
|
||||
Uri.fromFile(file)
|
||||
}
|
||||
|
||||
val intent = Intent(Intent.ACTION_VIEW).apply {
|
||||
setDataAndType(uri, "application/vnd.android.package-archive")
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||
}
|
||||
}
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
private fun showLoadingDialog(msg: String) {
|
||||
payResultLoading = RxDialogShapeLoading(this)
|
||||
payResultLoading!!.setMessage(msg)
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ class BZYConstants {
|
|||
const val YMTGUrl = "https://t.me/shadowcat_vpn";
|
||||
const val DefTGUrl = "https://t.me/bazhuayuvpn";
|
||||
const val TZTGUrl = "https://t.me/taizivpn";
|
||||
|
||||
const val PopularApplicationsUrl = "https://2828.im/"
|
||||
|
||||
// const val GoSeaShareUrl = "https://219.139.81.40:8080/page/register.html?userId="
|
||||
// const val KeFuUrl = "https://www.cannmaxllc.com"
|
||||
|
|
|
|||
|
|
@ -270,4 +270,22 @@ class RechargeViewModel : PublicViewMode() {
|
|||
val requestBody: RequestBody = jsonString.toRequestBody("application/json; charset=utf-8".toMediaType())
|
||||
doAsync(HttpReqType.StripeType) { httpApi.getPayClientSecret(paramsToken,requestBody) }
|
||||
}
|
||||
|
||||
fun getWeChatPayClientSecret(productID:Int){
|
||||
val httpApi = NetService.instances.createHttps(HttpApi::class.java)
|
||||
val phToken = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN, "")!!
|
||||
val username =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")!!
|
||||
val paramsToken = hashMapOf(
|
||||
"phoneNumber" to username,
|
||||
"phToken" to phToken,
|
||||
)
|
||||
val params = hashMapOf(
|
||||
"id" to productID
|
||||
)
|
||||
val gson = Gson()
|
||||
val jsonString = gson.toJson(params)
|
||||
val requestBody: RequestBody = jsonString.toRequestBody("application/json; charset=utf-8".toMediaType())
|
||||
doAsync(HttpReqType.StripeWeChat) { httpApi.getPayClientSecret(paramsToken,requestBody) }
|
||||
}
|
||||
}
|
||||
|
|
@ -114,6 +114,7 @@ class SettingFragment: BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
|
|||
private lateinit var clSubApplicationProxy:ConstraintLayout
|
||||
private lateinit var clApplicationLanguage:ConstraintLayout
|
||||
private lateinit var clTelegraph:ConstraintLayout
|
||||
private lateinit var clFire:ConstraintLayout
|
||||
|
||||
private lateinit var tvExitLog:TextView
|
||||
|
||||
|
|
@ -211,6 +212,7 @@ class SettingFragment: BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
|
|||
clTelegraph=view.findViewById(R.id.clTelegraph)
|
||||
tvExitLog=view.findViewById(R.id.tvExitLog)
|
||||
tvVersion=view.findViewById(R.id.tvVersion)
|
||||
clFire=view.findViewById(R.id.clFire)
|
||||
|
||||
setExpireDate()
|
||||
|
||||
|
|
@ -430,6 +432,12 @@ class SettingFragment: BaseFragment(), CoroutineScope by CoroutineScope(Dispatch
|
|||
intent.setData(uri)
|
||||
startActivity(intent)
|
||||
}
|
||||
clFire.setOnClickListener {
|
||||
val uri = Uri.parse(BZYConstants.PopularApplicationsUrl)
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
intent.setData(uri)
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
tvExitLog.setOnClickListener {
|
||||
cleanUserInfo()
|
||||
|
|
|
|||
|
|
@ -485,6 +485,14 @@ interface HttpApi {
|
|||
).toString()
|
||||
): AppVersionCheckRsp
|
||||
|
||||
@Headers(
|
||||
"User-Agent: Octopus_Android"
|
||||
)
|
||||
@GET("/netbarcloud/vpn/upgradeVersion")
|
||||
suspend fun upgradeVersion(
|
||||
@QueryMap params: Map<String, String>
|
||||
): AppVersionCheckRsp
|
||||
|
||||
//忘记密码
|
||||
@Headers(
|
||||
"User-Agent: Octopus_Android"
|
||||
|
|
|
|||
|
|
@ -52,5 +52,7 @@ enum class HttpReqType(type: Int) {
|
|||
AppStartupStatus(48),
|
||||
AppUpStatus(49),
|
||||
AppStopStatus(50),
|
||||
SplashBg(51)
|
||||
SplashBg(51),
|
||||
GETAPPVERION(52),
|
||||
StripeWeChat(53)
|
||||
}
|
||||
|
|
@ -135,6 +135,19 @@ class LoginAtyVM : PublicViewMode() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun upgradeVersion() {
|
||||
val httpApi = NetService.instances.createHttpsEncodeStr(HttpApi::class.java)
|
||||
val phoneNumber =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")!!
|
||||
val params = mutableMapOf(
|
||||
"phoneNumber" to phoneNumber,
|
||||
"versionNo" to BuildConfig.VERSION_CODE.toString(),
|
||||
"versionType" to "1", //android写死
|
||||
"invitationCode" to BuildConfig.productId,
|
||||
)
|
||||
Log.d("appCheck==>$params")
|
||||
doAsync(HttpReqType.GETAPPVERION) {
|
||||
httpApi.upgradeVersion(params)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -13,6 +13,7 @@ import com.yingmao.clash.base.PublicViewMode
|
|||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.entity.CheckLoginRsp
|
||||
import com.yingmao.clash.listener.AsyncCallback
|
||||
import com.yingmao.clash.listener.DownLoadListener
|
||||
import com.yingmao.clash.net.http.HttpApi
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.NetService
|
||||
|
|
@ -100,4 +101,24 @@ class SplashAtyVM : PublicViewMode() {
|
|||
val httpApi = NetService.instances.createHttps(HttpApi::class.java)
|
||||
doAsync(HttpReqType.SplashBg) { httpApi.splashBg() }
|
||||
}
|
||||
fun appCheck() {
|
||||
val httpApi = NetService.instances.createHttpsEncodeStr(HttpApi::class.java)
|
||||
val token = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN, "")!!
|
||||
val phoneNumber =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")!!
|
||||
val params = mutableMapOf(
|
||||
"phToken" to token,
|
||||
"phoneNumber" to phoneNumber,
|
||||
"versionNo" to BuildConfig.VERSION_CODE.toString(),
|
||||
"versionType" to "1", //android写死
|
||||
"invitationCode" to BuildConfig.productId,
|
||||
)
|
||||
com.cncat.vpn.common.log.Log.d("appCheck==>$params")
|
||||
doAsync(HttpReqType.App_VERION_CHECK) {
|
||||
httpApi.appUpgrade(params)
|
||||
}
|
||||
}
|
||||
fun downLoadFile(url: String, downLoadListener: DownLoadListener) {
|
||||
NetService.instances.downloadFile(url, downLoadListener)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,299 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="130"
|
||||
android:viewportHeight="130">
|
||||
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M0,64.88a64.28,63.83 0,1 0,128.56 0a64.28,63.83 0,1 0,-128.56 0z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#5275e3"
|
||||
android:pathData="M69.25,74.77l-0.21,0.31c-0.29,0.42 -0.59,0.84 -0.88,1.27l0,0.06 -0.8,1.22v0.06h-0.07l-1,1.33 0,0c-0.35,0.41 -0.69,0.82 -1,1.24l-1,1.4 -0.9,1.2c-0.08,0.13 -0.15,0.27 -0.23,0.39l-0.56,0.74 -0.72,0.88c-0.12,0.2 -0.25,0.4 -0.38,0.6l-0.45,0.47a0.14,0.14 0,0 0,-0.07 0.15l-0.69,1.17c-0.14,0.21 -0.27,0.43 -0.4,0.65l0,0.09 -0.08,0 -0.65,1.27 -0.15,0.34c-0.68,1.46 -1.35,2.92 -2,4.37l-0.08,0.39c-0.31,1.5 -0.62,3 -0.94,4.49l0,0.54v1c0,0.17 0,0.34 0,0.5l0.9,4.25 2.12,4.66a41.21,41.21 0,0 1,-5.53 -1.71,15.78 15.78,0 0,1 -9.35,-11.45c-0.16,-0.93 -0.33,-1.85 -0.5,-2.78s0,-2 -0.07,-3l-0.31,-1.24 -0.9,1.21 -0.44,1.11L41.04,94.49l-0.3,1c-0.16,0.82 -0.33,1.64 -0.5,2.46l-0.09,0.46 -0.07,0.44L40.02,103.49l0.42,2.51 0.15,0.65 0.21,0.68 0.23,0.53c0.29,0.63 0.59,1.26 0.89,1.89 0.14,0.25 0.29,0.5 0.44,0.75s0.22,0.36 0.32,0.54l0.19,0.27 0.16,0.24a0.07,0.07 0,0 1,0.09 0.09l0.94,1c2,1.41 4,2.84 6.05,4.21a14.29,14.29 0,0 0,2 1,19.69 19.69,0 0,1 -2.3,0.06c-11.92,-1 -20.55,-7.11 -23.09,-16.22l-0.72,-3.8c0,-0.65 -0.11,-1.29 -0.16,-1.94v-3.32c0,-0.49 0.08,-1 0.13,-1.47s0.11,-0.78 0.16,-1.18l0.12,-0.63 0.22,-0.56 3.76,-9c0.09,-0.16 0.19,-0.32 0.28,-0.49s0.2,-0.38 0.29,-0.57L31.59,76.49q2.58,-7 5.17,-14l0,-0.43 0.06,-5.47c0.07,-0.37 0.13,-0.74 0.2,-1.11a4.28,4.28 0,0 0,0.34 1.1c1.13,1.76 -1.52,4.83 2,5.75 -1.32,2.54 0.51,2.87 2.14,2.5 2,-0.47 0.57,-2.41 0.85,-3.63 0.33,-1.46 -0.19,-3.11 -0.35,-4.67l1.32,4.46c0.07,2.81 0.07,5.62 0.23,8.43 0.14,2.28 0.74,4.69 3.3,5.14 4.22,0.76 5.74,-2.59 7.38,-5.53a0.18,0.18 0,0 0,0 -0.16l0.26,-0.62h0l0.31,-0.69 0.15,-0.62L55.37,65.49l0.12,-0.62 0.32,-2.79c-0.08,-1.42 -0.17,-2.83 -0.25,-4.25l-0.07,-0.59L55.15,52.49a31.48,31.48 0,0 1,1 5.69c0,4.93 1.08,8.28 7.2,6.86a11.26,11.26 0,0 1,5.29 0c1.34,0.37 3.49,-1.16 4,1.36a4.12,4.12 0,0 1,-0.25 1.46c0.28,-0.56 0.6,-1.11 0.84,-1.7 0.35,-0.89 0.61,-1.82 1,-2.7 0.28,-0.67 0.68,-1.37 0.85,0.06v0.39c-0.27,0.67 -0.53,1.35 -0.8,2l-0.12,0.37 -1.73,3 -0.15,0.42 -0.39,0.66a0.12,0.12 0,0 1,-0.14 0.14l-0.69,1.17a0.11,0.11 0,0 1,-0.12 0.12l-0.39,0.68c0,0.09 0,0.14 -0.15,0.13 -0.21,0.4 -0.43,0.8 -0.64,1.21a0.09,0.09 0,0 1,0 0.14ZM37.71,63l-0.12,0.18 0.19,0.08s0.07,-0.08 0.07,-0.09A2.09,2.09 0,0 0,37.71 63Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#54ace2"
|
||||
android:pathData="M75.07,63.58c-0.17,-1.43 -0.57,-0.73 -0.85,-0.06 -0.37,0.88 -0.63,1.81 -1,2.7 -0.24,0.59 -0.56,1.14 -0.84,1.7A4.12,4.12 0,0 0,72.65 66.49c-0.56,-2.52 -2.71,-1 -4,-1.36a11.26,11.26 0,0 0,-5.29 0c-6.12,1.42 -7.22,-1.93 -7.2,-6.86 -0.21,-0.63 -0.32,-0.9 -0.43,-0.93l-0.19,0C54.71,47.49 47.65,39.88 45.99,30.32 44.13,19.66 49.58,5.49 58.37,0.16a2.16,2.16 0,0 1,0.63 -0.16c0,0.2 0.08,0.45 0,0.58 -9.14,13.91 -3.4,25.44 5.89,36.4 0.87,1 1.82,2 2.73,3 -0.23,-1.25 -0.4,-2.52 -0.69,-3.76a45.78,45.78 0,0 1,-0.42 -17.34A9.42,9.42 0,0 1,66.92 17.49a7.24,7.24 0,0 1,0.25 0.79C69.16,30.49 77.54,38.64 85.71,47c3.85,4 5.58,9 6,14.55l-0.56,0c0.73,4.94 -2.71,3.54 -5.14,3.16 -3.14,-0.5 -6.58,1.63 -9.44,-1.07ZM67.81,40.22l-0.08,-0.1s-0.08,0.06 -0.08,0.09 0,0.06 0.07,0.09Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#5275e3"
|
||||
android:pathData="M76.51,63.62c2.86,2.7 6.3,0.57 9.44,1.07 2.43,0.38 5.87,1.78 5.14,-3.16l0.56,0 0,0.4 0,3.22 0.06,0.09 -0.06,0.09c0,0.57 0,1.15 0,1.72 -0.33,2.11 -0.68,4.22 -1,6.34 -0.15,1.09 -0.59,3 -0.28,3.16 1.69,0.73 3.17,-0.31 4.08,-1.6A54.65,54.65 0,0 0,97.62 69.49l0.39,-1 0.56,-1.92 1,-3.59 0.5,0.42 0.17,1.15q0.23,8.17 0.46,16.36l-0.08,1.37c-0.16,1.12 -0.31,2.23 -0.47,3.34 -2.46,16.33 -10.68,27.79 -27.44,32 -0.33,0.09 -0.67,0.14 -1,0.21a8.06,8.06 0,0 1,0.89 -1c5.42,-4.18 9.75,-9.2 12.25,-15.64a0.11,0.11 0,0 0,0.06 -0.12c0.09,-0.22 0.18,-0.44 0.26,-0.65 0.3,-1.38 0.59,-2.76 0.88,-4.14l0.16,-1.15c-0.09,-1.31 -0.17,-2.61 -0.26,-3.92l-0.75,0.7v0.07h-0.07L84.71,92.49l-0.26,0.42c-0.09,0.19 -0.19,0.38 -0.29,0.57s0,0.29 -0.08,0.43l-0.42,0.72 -0.72,1.1 -0.44,0.57a0.14,0.14 0,0 1,-0.08 0.17l-0.38,0.5c-0.44,0.55 -0.87,1.1 -1.3,1.66l-0.85,1A21.32,21.32 0,0 1,69.57 106.49c-4.28,1.27 -3.51,-2.09 -3.39,-4.21 0.54,-9.87 7.15,-17.52 10,-26.54 0.28,-1.45 0.55,-2.9 0.83,-4.36l0.1,-0.86L77.11,68.16l-0.11,-1.09L76.71,64.21Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#54ace2"
|
||||
android:pathData="M43.36,61.06l-1.32,-4.46c0.16,1.56 0.68,3.21 0.35,4.67 -0.28,1.22 1.18,3.16 -0.85,3.63 -1.63,0.37 -3.46,0 -2.14,-2.5 -3.53,-0.92 -0.88,-4 -2,-5.75a4.28,4.28 0,0 1,-0.34 -1.1c-0.07,0.37 -0.13,0.74 -0.2,1.11 -1.2,-4.5 -3.71,-7.62 -8.7,-8.12 -0.15,0 -0.28,-0.16 -0.42,-0.25 0.15,-0.14 0.28,-0.38 0.44,-0.4 5.49,-0.48 10.37,0.4 13.14,5.89 -0.06,0.14 -0.13,0.27 -0.19,0.4l0.34,0 0,0.09c0,0.48 0,1 0,1.42 0,0 0.19,0.1 0.3,0.15l0,-1.09Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#5275e3"
|
||||
android:pathData="M100.71,80.89q-0.24,-8.18 -0.46,-16.36A66.36,66.36 0,0 1,100.71 80.89Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#5275e3"
|
||||
android:pathData="M100.12,63.38l-0.5,-0.42 -1,3.59 0.75,-3.43c0.14,-0.64 0.27,-1.27 0.41,-1.9Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#5275e3"
|
||||
android:pathData="M85.24,91.96l0.75,-0.7c0.09,1.31 0.17,2.61 0.26,3.92C85.53,94.22 87.41,92.49 85.24,91.96Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M56.95,94.05c0.68,-1.45 1.35,-2.91 2,-4.37C58.3,91.14 57.63,92.6 56.95,94.05Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M55.56,57.83c0.08,1.42 0.17,2.83 0.25,4.25C55.71,60.66 55.64,59.25 55.56,57.83Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M86.09,96.33c-0.29,1.38 -0.58,2.76 -0.88,4.14C85.51,99.09 85.8,97.71 86.09,96.33Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M77.05,71.41c-0.28,1.46 -0.55,2.91 -0.83,4.36Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M25.96,97.87l0.72,3.8Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M55.93,98.93c0.32,-1.5 0.63,-3 0.94,-4.49C56.56,95.94 56.25,97.43 55.93,98.93Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M56.86,105.21l-0.9,-4.25Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M25.8,92.61v0Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M72.43,69.38l1.73,-3C73.58,67.37 73.01,68.38 72.43,69.38Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M100.2,85.6c0.16,-1.11 0.31,-2.22 0.47,-3.34C100.51,83.38 100.36,84.49 100.2,85.6Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M76.71,64.21l0.37,2.86Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#5275e3"
|
||||
android:pathData="M42.32,90.94l0.9,-1.21 0.31,1.24Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M43.6,93.93c0.17,0.93 0.34,1.85 0.5,2.78C43.94,95.78 43.77,94.85 43.6,93.93Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M40.44,106.01 L40.02,103.49Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M77.15,68.16v0Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M41.04,94.49l0.84,-2.45Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M31.59,76.49l-0.83,2.23Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M40.24,97.95c0.17,-0.82 0.34,-1.64 0.5,-2.46C40.58,96.31 40.41,97.13 40.24,97.95Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M74.28,65.99c0.27,-0.67 0.53,-1.35 0.8,-2C74.81,64.64 74.55,65.32 74.28,65.99Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M16.99,191.95c-0.88,-1.89 -1.77,-3.79 -2.65,-5.69C15.22,188.16 16.11,190.06 16.99,191.95Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M65.25,80.31c0.34,-0.42 0.68,-0.83 1,-1.24C65.93,79.49 65.59,79.89 65.25,80.31Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#54ace2"
|
||||
android:pathData="M41.71,54.7l0,1.09c-0.11,0 -0.29,-0.1 -0.3,-0.15 0,-0.47 0,-0.94 0,-1.42C41.55,54.38 41.63,54.54 41.71,54.7Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M68.16,76.35c0.29,-0.43 0.59,-0.85 0.88,-1.27C68.71,75.49 68.45,75.92 68.16,76.35Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M66.3,79.03l1,-1.33Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M63.38,82.91l0.9,-1.2Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M91.71,65.17l0,-3.22Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M23.4,200.66l-2.8,-3Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M59.13,89.34l0.65,-1.27Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M67.32,77.63l0.8,-1.22Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M69.76,73.91c0.21,-0.41 0.43,-0.81 0.64,-1.21C70.19,73.1 69.97,73.49 69.76,73.91Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M71.06,71.77 L71.71,70.6Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M55.92,100.49v-1C55.92,99.8 55.92,100.13 55.92,100.49Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M79.92,99.63l0.85,-1Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M62.59,84.04l0.56,-0.74Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M26.09,89.96c-0.05,0.4 -0.11,0.79 -0.16,1.18C25.98,90.75 26.04,90.36 26.09,89.96Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M98.01,68.49l-0.39,1Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M91.71,67.07c0,-0.57 0,-1.15 0,-1.72C91.71,65.92 91.71,66.49 91.71,67.07Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M13.65,184.68l-0.63,-2.06Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M61.49,85.49c0.13,-0.2 0.26,-0.4 0.38,-0.6Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M83.71,94.67l0.42,-0.72Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M59.88,87.96c0.13,-0.22 0.26,-0.44 0.4,-0.65C60.14,87.49 60.01,87.74 59.88,87.96Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M70.55,72.57l0.39,-0.68Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M69.25,74.77l0.48,-0.72Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M71.89,70.49l0.39,-0.66Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M82.53,96.34l0.44,-0.57Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M84.19,93.49c0.1,-0.19 0.2,-0.38 0.29,-0.57Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M30.47,79.31c-0.09,0.17 -0.19,0.33 -0.28,0.49C30.28,79.64 30.38,79.49 30.47,79.31Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M26.43,88.77l-0.22,0.56Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M84.71,92.49l0.43,-0.49Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M54.98,67.01l-0.15,0.62Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M40.08,98.85l0.07,-0.44Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M55.49,64.87l-0.12,0.62Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M19.29,195.84l-1,-1.61Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M82.07,97.01l0.38,-0.5Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M54.52,68.32h0Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M54.3,68.94a0.18,0.18 0,0 1,0 0.16s0,-0.11 0,-0.16Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M36.79,62.13l0,0.43Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#54ace2"
|
||||
android:pathData="M41.46,54.13l-0.34,0c0.06,-0.13 0.13,-0.26 0.19,-0.4Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#5275e3"
|
||||
android:pathData="M60.97,86.14a0.14,0.14 0,0 1,0.07 -0.15C61.06,86.07 61.04,86.12 60.97,86.14Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M84.95,101.12a0.11,0.11 0,0 1,-0.06 0.12l-0.05,-0.09Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#fc4d02"
|
||||
android:pathData="M20.31,197.37l-0.47,-0.72Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#5275e3"
|
||||
android:pathData="M37.71,63a2.09,2.09 0,0 1,0.14 0.17s0,0.09 -0.07,0.09l-0.19,-0.08Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#f3f3f2"
|
||||
android:pathData="M67.81,40.22l-0.09,0.08s-0.07,-0.06 -0.07,-0.09 0,-0.06 0.08,-0.09Z" />
|
||||
|
||||
<path
|
||||
android:fillColor="#54ace2"
|
||||
android:pathData="M42.39,58.15" />
|
||||
|
||||
<path
|
||||
android:fillColor="#54ace2"
|
||||
android:pathData="M35.71,55.78" />
|
||||
|
||||
</vector>
|
||||
|
|
@ -56,6 +56,15 @@
|
|||
app:srcCompat="@drawable/alipay"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/ivStripeWechatPay"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:background="@drawable/press_effect"
|
||||
android:padding="5dp"
|
||||
android:visibility="gone"
|
||||
android:layout_marginStart="20dp"
|
||||
app:srcCompat="@drawable/wechat" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -3,12 +3,24 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/activity_bingding_bg"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp">
|
||||
android:paddingRight="10dp"
|
||||
android:background="@color/translate"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/activity_bingding_bg"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
>
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -37,6 +49,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
|
||||
android:autoLink="web"
|
||||
android:gravity="left"
|
||||
android:textColor="#4072FE"
|
||||
|
|
@ -47,6 +62,8 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:autoLink="web"
|
||||
android:gravity="left"
|
||||
android:textColor="#4072FE"
|
||||
|
|
@ -129,6 +146,8 @@
|
|||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
|||
|
|
@ -558,7 +558,7 @@
|
|||
android:layout_marginTop="12dp"
|
||||
>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clInitializationRepair"
|
||||
android:id="@+id/clFire"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
|
|
@ -572,16 +572,16 @@
|
|||
>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiInitializationRepair"
|
||||
android:id="@+id/aiFire"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="11dp"
|
||||
android:src="@drawable/ic_init"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/llInitializationRepair"
|
||||
android:src="@drawable/setting_fire_line"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/llFire"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/llInitializationRepair" />
|
||||
app:layout_constraintTop_toTopOf="@+id/llFire" />
|
||||
<LinearLayout
|
||||
android:id="@+id/llInitializationRepair"
|
||||
android:id="@+id/llFire"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
|
|
@ -589,34 +589,35 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/aiInitializationRepair"
|
||||
app:layout_constraintStart_toEndOf="@+id/aiFire"
|
||||
android:layout_marginTop="25dp"
|
||||
android:layout_marginBottom="25dp"
|
||||
android:layout_marginStart="12dp"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvInit"
|
||||
android:id="@+id/tvFire"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/InitializationRepair"
|
||||
android:text="@string/PopularApplications"
|
||||
android:textColor="@color/gray_828282"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tvInitStr"
|
||||
android:id="@+id/tvFireStr"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/InitializationRepairStr"
|
||||
android:text="@string/PopularApplicationsStr"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:textColor="@color/gray_828282"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:textSize="12sp"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clTelegraph"
|
||||
android:layout_width="0dp"
|
||||
|
|
@ -944,6 +945,9 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -952,7 +956,6 @@
|
|||
android:layout_marginStart="13dp"
|
||||
android:layout_marginEnd="13dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginBottom="80dp"
|
||||
>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clApplicationLanguage"
|
||||
|
|
@ -1014,7 +1017,77 @@
|
|||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clInitializationRepair"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/setting_model_bg"
|
||||
android:elevation="10dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:outlineSpotShadowColor="@color/blue_CCDAFF"
|
||||
>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiInitializationRepair"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="11dp"
|
||||
android:src="@drawable/ic_init"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/llInitializationRepair"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/llInitializationRepair" />
|
||||
<LinearLayout
|
||||
android:id="@+id/llInitializationRepair"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginEnd="11dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/aiInitializationRepair"
|
||||
android:layout_marginTop="25dp"
|
||||
android:layout_marginBottom="25dp"
|
||||
android:layout_marginStart="12dp"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvInit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/InitializationRepair"
|
||||
android:textColor="@color/gray_828282"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tvInitStr"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/InitializationRepairStr"
|
||||
android:textColor="@color/gray_828282"
|
||||
android:layout_marginTop="10dp"
|
||||
android:textSize="12sp"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:baselineAligned="false"
|
||||
android:orientation="horizontal"
|
||||
android:layout_marginStart="13dp"
|
||||
android:layout_marginEnd="13dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginBottom="90dp"
|
||||
>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clExit"
|
||||
android:layout_width="0dp"
|
||||
|
|
@ -1076,6 +1149,69 @@
|
|||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clTemp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/setting_model_bg"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:visibility="invisible"
|
||||
android:outlineSpotShadowColor="@color/blue_CCDAFF"
|
||||
>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiTemp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="11dp"
|
||||
android:src="@mipmap/ic_setting_exit"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/clTemp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/clTemp"
|
||||
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/llTemp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginEnd="11dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginTop="18dp"
|
||||
android:layout_marginBottom="18dp"
|
||||
app:layout_constraintStart_toEndOf="@+id/aiTemp"
|
||||
android:layout_marginStart="12dp"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvTemp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/exit"
|
||||
android:textColor="@color/gray_828282"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tvTempStr"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/exitTxt"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:textColor="@color/gray_828282"
|
||||
android:layout_marginTop="5dp"
|
||||
android:textSize="12sp"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -346,4 +346,6 @@ Service Description\n
|
|||
<string name="laPay">CYN</string>
|
||||
<string name="Yuan">$元</string>
|
||||
<string name="everyDay">每天</string>
|
||||
<string name="PopularApplications">Popular applications</string>
|
||||
<string name="PopularApplicationsStr">Popular Application Navigation</string>
|
||||
</resources>
|
||||
|
|
@ -336,4 +336,6 @@
|
|||
<string name="laPay">CYN</string>
|
||||
<string name="Yuan">$元</string>
|
||||
<string name="everyDay">每天</string>
|
||||
<string name="PopularApplications">熱門應用</string>
|
||||
<string name="PopularApplicationsStr">熱門應用導航</string>
|
||||
</resources>
|
||||
|
|
@ -335,4 +335,6 @@
|
|||
<string name="laPay">CYN</string>
|
||||
<string name="Yuan">$元</string>
|
||||
<string name="everyDay">每天</string>
|
||||
<string name="PopularApplications">熱門應用</string>
|
||||
<string name="PopularApplicationsStr">熱門應用導航</string>
|
||||
</resources>
|
||||
|
|
@ -354,4 +354,6 @@
|
|||
<string name="laPay">CYN</string>
|
||||
<string name="Yuan">$元</string>
|
||||
<string name="everyDay">每天</string>
|
||||
<string name="PopularApplications">热门应用</string>
|
||||
<string name="PopularApplicationsStr">热门应用导航</string>
|
||||
</resources>
|
||||
Loading…
Reference in New Issue