新增截屏控制和添加字段

This commit is contained in:
level 2025-08-01 15:43:54 +08:00
parent bb99d3768d
commit 1b23052085
5 changed files with 47 additions and 2 deletions

View File

@ -14,6 +14,7 @@ import android.os.Bundle
import android.text.TextUtils
import android.text.method.LinkMovementMethod
import android.view.View
import android.view.WindowManager
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.ProgressBar
@ -53,6 +54,7 @@ import com.yingmao.clash.R
import com.yingmao.clash.app.MainApplication
import com.yingmao.clash.base.BaseActivity
import com.yingmao.clash.conf.BZYConstants
import com.yingmao.clash.conf.BZYConstants.Companion.ScreenFlag
import com.yingmao.clash.conf.Conf
import com.yingmao.clash.entity.BannerImgBean
import com.yingmao.clash.entity.CheckLoginRsp
@ -709,6 +711,24 @@ class NewMainActivity : BaseActivity() {
if(countryFlag == true){
findViewById<ConstraintLayout>(R.id.clLocation).visibility=View.VISIBLE
}
val screenshotFlag = it.data?.screenshotFlag
screenshotFlag.let {
if (screenshotFlag == true) {
// 在 Activity 中取消禁止截屏/录屏
window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
MMKV.defaultMMKV().encode(
ScreenFlag,screenshotFlag
)
}else{
window.setFlags(
WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE
)
MMKV.defaultMMKV().encode(
ScreenFlag,screenshotFlag!!
)
}
}
}
}
}else if(httpStatus.reqType == HttpReqType.EXPENSES_RECORD){

View File

@ -14,6 +14,7 @@ import android.text.TextUtils
import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.view.inputmethod.InputMethodManager
import android.widget.*
import androidx.annotation.RequiresApi
@ -35,6 +36,7 @@ import com.yingmao.clash.net.http.HttpStatus
import com.yingmao.clash.remote.Broadcasts
import com.yingmao.clash.remote.Remote
import com.cncat.vpn.service.store.ServiceStore
import com.yingmao.clash.conf.BZYConstants.Companion.ScreenFlag
import com.yingmao.clash.util.ApplicationObserver
import com.yingmao.clash.util.StatusBarUtils
import com.yingmao.clash.util.UiStore
@ -79,6 +81,17 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope(), Br
StatusBarUtils.with(this).init()
window.decorView.systemUiVisibility =
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
val decodeBool = MMKV.defaultMMKV().decodeBool(ScreenFlag, false)
if(decodeBool){
window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
}else{
window.setFlags(
WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE
)
}
}
override fun setContentView(layoutResID: Int) {

View File

@ -122,6 +122,6 @@ class BZYConstants {
const val applicationMode = "ApplicationMode"
const val CONNECTID = "connectId"
const val is_splash_first = "is_splash_first"
const val ScreenFlag="screenshotFlag"
}
}

View File

@ -249,5 +249,7 @@ data class ShowNode(
) : BaseRsp
data class ShowNodeInfo(
@field:SerializedName("countryFlag")
val countryFlag: Boolean
val countryFlag: Boolean,
@field:SerializedName("screenshotFlag")
val screenshotFlag: Boolean
)

View File

@ -285,4 +285,14 @@ object Utils {
}
return false
}
fun getEquipmentModel():String{
val androidVersion = Build.VERSION.RELEASE // 系统版本号,例如 "13"
val sdkInt = Build.VERSION.SDK_INT // SDK 级别,例如 33
val manufacturer = Build.MANUFACTURER // 厂商,例如 "Xiaomi"
val model = Build.MODEL // 机型,例如 "MI 11"
val brand = Build.BRAND // 品牌,例如 "Xiaomi"
val device = Build.DEVICE // 设备代号,例如 "venus"
val hardware = Build.HARDWARE
return "androidVersion:$androidVersion,sdkInt:$sdkInt,manufacturer:$manufacturer,model:$model,brand:$brand,device:$device,hardware:$hardware"
}
}