add 活动

This commit is contained in:
pc 2024-07-25 18:59:15 +08:00
parent aa5b3cc363
commit 400ac6943e
10 changed files with 73 additions and 28 deletions

View File

@ -136,6 +136,7 @@
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".act.ActivityActivity" android:name=".act.ActivityActivity"
android:process=":background"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".act.LossPreventionActivity" android:name=".act.LossPreventionActivity"

View File

@ -7,6 +7,7 @@ import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils
import android.view.View import android.view.View
import android.widget.TextView import android.widget.TextView
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
@ -57,6 +58,8 @@ class ActivityActivity : BaseActivity() {
initAdapter() initAdapter()
initRefreshLayout() initRefreshLayout()
initLoadMore() initLoadMore()
Log.d("uc=======>${MainApplication.getUserInfo()?.userCommand}")
} }
private fun initView() { private fun initView() {
@ -79,11 +82,10 @@ class ActivityActivity : BaseActivity() {
} }
private fun showActDialog(bean: Activity_) { private fun showActDialog(bean: Activity_) {
if (bean.vipRule == 1) {
checkExpire();
}
var command = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_VPN_UserCommand, "")!! var command = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_VPN_UserCommand, "")!!
if (TextUtils.isEmpty(command)){
command=NewMainActivity.userCommand!!
}
command = "领会员${command}" command = "领会员${command}"
copyToClipboard(command) copyToClipboard(command)
var act_dialog = MaterialDialog(this@ActivityActivity).show { var act_dialog = MaterialDialog(this@ActivityActivity).show {
@ -134,7 +136,7 @@ class ActivityActivity : BaseActivity() {
val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("label", text) val clip = ClipData.newPlainText("label", text)
clipboard.setPrimaryClip(clip) clipboard.setPrimaryClip(clip)
RxToast.info("口令已复制,加群后请手动发送.")
} }
private fun initRefreshLayout() { private fun initRefreshLayout() {

View File

@ -20,6 +20,7 @@ import com.yingmao.clash.net.http.entity.LoginRsp
import com.tencent.mmkv.MMKV import com.tencent.mmkv.MMKV
import com.yingmao.clash.BuildConfig import com.yingmao.clash.BuildConfig
import com.yingmao.clash.R import com.yingmao.clash.R
import com.yingmao.clash.app.MainApplication
import com.yingmao.clash.base.BaseActivity import com.yingmao.clash.base.BaseActivity
import com.yingmao.clash.conf.BZYConstants import com.yingmao.clash.conf.BZYConstants
import com.yingmao.clash.entity.CheckLoginRsp import com.yingmao.clash.entity.CheckLoginRsp
@ -56,10 +57,8 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
setContentView(R.layout.layout_activity_login) setContentView(R.layout.layout_activity_login)
//点击输入框外边隐藏输入法 必须在setContentView之后调用 //点击输入框外边隐藏输入法 必须在setContentView之后调用
setupUI(findViewById<ViewGroup>(android.R.id.content).getChildAt(0)) setupUI(findViewById<ViewGroup>(android.R.id.content).getChildAt(0))
loginViewMode = ViewModelProvider(this).get(LoginAtyVM::class.java) loginViewMode = ViewModelProvider(this).get(LoginAtyVM::class.java)
observe(this, loginViewMode) observe(this, loginViewMode)
initViews() initViews()
} }
@ -102,7 +101,6 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
mmkv.encode(BZYConstants.MMKV_KEY_USER_ID, rsp.data?.userId) mmkv.encode(BZYConstants.MMKV_KEY_USER_ID, rsp.data?.userId)
mmkv.encode(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, loginUserName) mmkv.encode(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, loginUserName)
mmkv.encode(BZYConstants.MMKV_KEY_IS_REGISTER, true) //如果登录过一次也算注册过 mmkv.encode(BZYConstants.MMKV_KEY_IS_REGISTER, true) //如果登录过一次也算注册过
loginViewMode.checkLogin() loginViewMode.checkLogin()
} else { } else {
hideLoadingDialog() hideLoadingDialog()
@ -118,8 +116,10 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
val rsp = httpStatus.rsp val rsp = httpStatus.rsp
if (rsp is CheckLoginRsp) { if (rsp is CheckLoginRsp) {
if (rsp.code == 0) { if (rsp.code == 0) {
rsp.data?.let { MainApplication.setUserInfo(it) }
val expired = rsp.data?.expired val expired = rsp.data?.expired
val isPerfect = rsp.data?.isPerfect val isPerfect = rsp.data?.isPerfect
val userCommand = rsp.data?.userCommand
val mmkv = MMKV.defaultMMKV() val mmkv = MMKV.defaultMMKV()
mmkv.encode(BZYConstants.MMKV_KEY_VPN_EXPIRED, expired ?: true) mmkv.encode(BZYConstants.MMKV_KEY_VPN_EXPIRED, expired ?: true)
mmkv.encode( mmkv.encode(
@ -127,6 +127,7 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
rsp.data?.vpnExpireTime ?: 0 rsp.data?.vpnExpireTime ?: 0
) )
mmkv.encode(BZYConstants.MMKV_KEY_IS_PERFECT, isPerfect ?: true) mmkv.encode(BZYConstants.MMKV_KEY_IS_PERFECT, isPerfect ?: true)
mmkv.encode(BZYConstants.MMKV_KEY_VPN_UserCommand, userCommand ?: "")
toMain() toMain()
// loginViewMode.getServiceAclAndSet() // loginViewMode.getServiceAclAndSet()
} else { } else {

View File

@ -117,6 +117,8 @@ class NewMainActivity : BaseActivity() {
var newMainActGlo: Boolean = false var newMainActGlo: Boolean = false
var isUpload: Boolean = false var isUpload: Boolean = false
var hostsMem: ArrayList<String> = ArrayList() var hostsMem: ArrayList<String> = ArrayList()
} }
val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss") val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
@ -246,8 +248,10 @@ class NewMainActivity : BaseActivity() {
// }) // })
val isGlobal = MMKV.defaultMMKV().decodeBool(BZYConstants.MMKV_KEY_GLOBAL_MODEL, false) val isGlobal = MMKV.defaultMMKV().decodeBool(BZYConstants.MMKV_KEY_GLOBAL_MODEL, false)
Log.i("newMainActGlo isGlobal==>${isGlobal}") val uc = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_VPN_UserCommand, "")
Log.i("newMainActGlo isGlobal==>${isGlobal}, uc==>${uc}")
newMainActGlo = isGlobal newMainActGlo = isGlobal
startLog() startLog()
showBindAccount() showBindAccount()
} }

View File

@ -1,5 +1,6 @@
package com.yingmao.clash.act package com.yingmao.clash.act
import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.text.method.HideReturnsTransformationMethod import android.text.method.HideReturnsTransformationMethod
@ -16,6 +17,7 @@ import com.tencent.mmkv.MMKV
import com.yingmao.clash.BuildConfig import com.yingmao.clash.BuildConfig
import com.yingmao.clash.R import com.yingmao.clash.R
import com.yingmao.clash.base.BaseActivity import com.yingmao.clash.base.BaseActivity
import com.yingmao.clash.common.log.Log
import com.yingmao.clash.conf.BZYConstants import com.yingmao.clash.conf.BZYConstants
import com.yingmao.clash.net.http.HttpStatus import com.yingmao.clash.net.http.HttpStatus
import com.yingmao.clash.net.http.entity.RegisterRsp import com.yingmao.clash.net.http.entity.RegisterRsp
@ -34,8 +36,8 @@ class RegisterActivity : BaseActivity(), View.OnClickListener {
private lateinit var usernameErrorTv: TextView private lateinit var usernameErrorTv: TextView
private lateinit var passwordErrorTv: TextView private lateinit var passwordErrorTv: TextView
// private lateinit var verificationTipTv: TextView private lateinit var verificationTipTv: TextView
// private lateinit var verificationSv: SlidingVerification private lateinit var verificationSv: SlidingVerification
private lateinit var username: String private lateinit var username: String
private lateinit var password: String private lateinit var password: String
@ -111,10 +113,10 @@ class RegisterActivity : BaseActivity(), View.OnClickListener {
val passwordHideCb2 = findViewById<CheckBox>(R.id.cb_password_hide_check) val passwordHideCb2 = findViewById<CheckBox>(R.id.cb_password_hide_check)
passwordHideCb2.setOnCheckedChangeListener(IOnCheckedChangeListener()) passwordHideCb2.setOnCheckedChangeListener(IOnCheckedChangeListener())
// verificationSv = findViewById(R.id.sv_verification) verificationSv = findViewById(R.id.sv_verification)
// verificationSv.setOnSeekBarChangeListener(IOnSeekBarChangeListener()) verificationSv.setOnSeekBarChangeListener(IOnSeekBarChangeListener())
// //
// verificationTipTv = findViewById(R.id.tv_verification_tip) verificationTipTv = findViewById(R.id.tv_verification_tip)
val registerTv = findViewById<TextView>(R.id.tv_register) val registerTv = findViewById<TextView>(R.id.tv_register)
registerTv.setOnClickListener(this) registerTv.setOnClickListener(this)
@ -178,14 +180,22 @@ class RegisterActivity : BaseActivity(), View.OnClickListener {
override fun onStartTrackingTouch(seekBar: SeekBar?) { override fun onStartTrackingTouch(seekBar: SeekBar?) {
} }
@SuppressLint("ResourceAsColor")
override fun onStopTrackingTouch(seekBar: SeekBar?) { override fun onStopTrackingTouch(seekBar: SeekBar?) {
seekBar?.let { seekBar?.let {
Log.d("it.progress==>${it.progress}")
if (it.progress >= it.max) { if (it.progress >= it.max) {
if (!checkInput())
it.progress = 0
else {
// verificationTipTv.text = getString(R.string.verification_success)
it.isEnabled = false it.isEnabled = false
verificationSv.progress=it.max
verificationTipTv.text = getString(R.string.verification_success)
verificationTipTv.setTextColor(R.color.black)
verificationSv.setProgressDrawableTiled(getDrawable(R.drawable.login_btn_bg_selector))
if (!checkInput()) {
}else {
} }
} else it.progress = 0 } else it.progress = 0
} }

View File

@ -27,6 +27,7 @@ import com.orhanobut.logger.Logger
import com.tencent.mmkv.MMKV import com.tencent.mmkv.MMKV
import com.yingmao.clash.BuildConfig import com.yingmao.clash.BuildConfig
import com.yingmao.clash.R import com.yingmao.clash.R
import com.yingmao.clash.app.MainApplication
import com.yingmao.clash.base.BaseActivity import com.yingmao.clash.base.BaseActivity
import com.yingmao.clash.conf.BZYConstants import com.yingmao.clash.conf.BZYConstants
import com.yingmao.clash.conf.BZYConstants.Companion.MMKV_KEY_IS_REGISTER import com.yingmao.clash.conf.BZYConstants.Companion.MMKV_KEY_IS_REGISTER
@ -49,6 +50,7 @@ import com.yingmao.clash.util.withProfile
import com.yingmao.clash.view.RxToast import com.yingmao.clash.view.RxToast
import com.yingmao.clash.vm.SplashAtyVM import com.yingmao.clash.vm.SplashAtyVM
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.MainScope import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -381,6 +383,8 @@ class SplashActivity : BaseActivity() {
HttpReqType.CHECK_LOGIN -> { HttpReqType.CHECK_LOGIN -> {
(httpStatus.rsp as CheckLoginRsp).let { checkLoginRsp -> (httpStatus.rsp as CheckLoginRsp).let { checkLoginRsp ->
if (checkLoginRsp.code == 0) { if (checkLoginRsp.code == 0) {
com.yingmao.clash.common.log.Log.d("splash CHECK_LOGIN==>")
checkLoginRsp.data?.let { MainApplication.setUserInfo(it) }
val expired = checkLoginRsp.data?.expired val expired = checkLoginRsp.data?.expired
val isPerfect = checkLoginRsp.data?.isPerfect val isPerfect = checkLoginRsp.data?.isPerfect
val userCommand = checkLoginRsp.data?.userCommand val userCommand = checkLoginRsp.data?.userCommand
@ -392,7 +396,11 @@ class SplashActivity : BaseActivity() {
) )
mmkv.encode(BZYConstants.MMKV_KEY_IS_PERFECT, isPerfect ?: true) mmkv.encode(BZYConstants.MMKV_KEY_IS_PERFECT, isPerfect ?: true)
mmkv.encode(BZYConstants.MMKV_KEY_VPN_UserCommand, userCommand ?: "") mmkv.encode(BZYConstants.MMKV_KEY_VPN_UserCommand, userCommand ?: "")
toMainPage() toMainPage()
} else { } else {
toLoginPage() toLoginPage()
} }

View File

@ -17,6 +17,8 @@ import com.yingmao.clash.R
import com.yingmao.clash.common.Global import com.yingmao.clash.common.Global
import com.yingmao.clash.common.compat.currentProcessName import com.yingmao.clash.common.compat.currentProcessName
import com.yingmao.clash.common.log.Log import com.yingmao.clash.common.log.Log
import com.yingmao.clash.entity.CheckLoginRsp
import com.yingmao.clash.entity.UserData
import com.yingmao.clash.util.clashDir import com.yingmao.clash.util.clashDir
import java.io.File import java.io.File
@ -25,6 +27,7 @@ import java.io.FileOutputStream
class MainApplication : Application() { class MainApplication : Application() {
companion object { companion object {
private lateinit var mApp: MainApplication private lateinit var mApp: MainApplication
private var userBean: UserData?=null
fun getApp(): MainApplication? { fun getApp(): MainApplication? {
return mApp return mApp
@ -34,6 +37,14 @@ class MainApplication : Application() {
private const val STATUS_CHANNEL = "profile_status_channel" private const val STATUS_CHANNEL = "profile_status_channel"
private const val RESULT_CHANNEL = "profile_result_channel" private const val RESULT_CHANNEL = "profile_result_channel"
fun getUserInfo(): UserData? {
return userBean
}
fun setUserInfo(bean: UserData) {
Log.d("setUserInfo")
userBean = bean
}
} }
override fun attachBaseContext(base: Context?) { override fun attachBaseContext(base: Context?) {
@ -92,16 +103,18 @@ class MainApplication : Application() {
nm.createNotificationChannels( nm.createNotificationChannels(
listOf( listOf(
NotificationChannel( NotificationChannel(
SERVICE_CHANNEL, getApp()?.getText(R.string.service_vpn), SERVICE_CHANNEL,
getApp()?.getText(R.string.service_vpn),
if (Build.VERSION.SDK_INT >= 28) NotificationManager.IMPORTANCE_MIN if (Build.VERSION.SDK_INT >= 28) NotificationManager.IMPORTANCE_MIN
else NotificationManager.IMPORTANCE_LOW else NotificationManager.IMPORTANCE_LOW
), // #1355 ), // #1355
NotificationChannel( NotificationChannel(
STATUS_CHANNEL, getApp()?.getText(R.string.service_proxy), STATUS_CHANNEL,
getApp()?.getText(R.string.service_proxy),
NotificationManager.IMPORTANCE_LOW NotificationManager.IMPORTANCE_LOW
), ), NotificationChannel(
NotificationChannel( RESULT_CHANNEL,
RESULT_CHANNEL, getApp()?.getText(R.string.service_transproxy), getApp()?.getText(R.string.service_transproxy),
NotificationManager.IMPORTANCE_DEFAULT NotificationManager.IMPORTANCE_DEFAULT
) )
) )

View File

@ -10,7 +10,13 @@ import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.yingmao.clash.BuildConfig import com.yingmao.clash.BuildConfig
import com.yingmao.clash.R import com.yingmao.clash.R
import com.yingmao.clash.common.log.Log
import com.yingmao.clash.util.StatusBarUtils import com.yingmao.clash.util.StatusBarUtils
import com.yingmao.clash.view.RxToast
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class BZYWebViewKeFu : AppCompatActivity() { class BZYWebViewKeFu : AppCompatActivity() {
private lateinit var webView: WebView private lateinit var webView: WebView
@ -28,13 +34,13 @@ class BZYWebViewKeFu : AppCompatActivity() {
setWebView() setWebView()
countDown() countDown()
} }
private fun countDown() { private fun countDown() {
val timer = object : CountDownTimer(10000, 1000) { val timer = object : CountDownTimer(5000, 1000) {
override fun onTick(millisUntilFinished: Long) { override fun onTick(millisUntilFinished: Long) {
} }
override fun onFinish() { override fun onFinish() {
Log.d("onFinish")
webView.evaluateJavascript("updateStatus()", null) webView.evaluateJavascript("updateStatus()", null)
} }
} }

View File

@ -154,7 +154,7 @@
app:layout_constraintStart_toStartOf="@+id/iv_icon" app:layout_constraintStart_toStartOf="@+id/iv_icon"
app:layout_constraintTop_toBottomOf="@+id/et_password_check" /> app:layout_constraintTop_toBottomOf="@+id/et_password_check" />
<!--<com.yingmao.clash.view.SlidingVerification <com.yingmao.clash.view.SlidingVerification
android:id="@+id/sv_verification" android:id="@+id/sv_verification"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="48dp" android:layout_height="48dp"

View File

@ -28,7 +28,7 @@
</RelativeLayout> </RelativeLayout>
<WebView <android.webkit.WebView
android:layout_below="@+id/rl_title_bar" android:layout_below="@+id/rl_title_bar"
android:id="@+id/webView" android:id="@+id/webView"
android:layout_width="match_parent" android:layout_width="match_parent"