From 1b230520854413001cd27f824989476c1222bd56 Mon Sep 17 00:00:00 2001 From: level <1364007522@qq.com> Date: Fri, 1 Aug 2025 15:43:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=88=AA=E5=B1=8F=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=92=8C=E6=B7=BB=E5=8A=A0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yingmao/clash/act/NewMainActivity.kt | 20 +++++++++++++++++++ .../com/yingmao/clash/base/BaseActivity.kt | 13 ++++++++++++ .../com/yingmao/clash/conf/BZYConstants.kt | 2 +- .../clash/net/http/entity/NormalRsp.kt | 4 +++- .../main/java/com/yingmao/clash/util/Utils.kt | 10 ++++++++++ 5 files changed, 47 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt b/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt index b2de254..f5e16a1 100644 --- a/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt @@ -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(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){ diff --git a/app/src/main/java/com/yingmao/clash/base/BaseActivity.kt b/app/src/main/java/com/yingmao/clash/base/BaseActivity.kt index 10671f8..e6e1ab7 100644 --- a/app/src/main/java/com/yingmao/clash/base/BaseActivity.kt +++ b/app/src/main/java/com/yingmao/clash/base/BaseActivity.kt @@ -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) { diff --git a/app/src/main/java/com/yingmao/clash/conf/BZYConstants.kt b/app/src/main/java/com/yingmao/clash/conf/BZYConstants.kt index 05f06fe..8dae1bb 100644 --- a/app/src/main/java/com/yingmao/clash/conf/BZYConstants.kt +++ b/app/src/main/java/com/yingmao/clash/conf/BZYConstants.kt @@ -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" } } \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/net/http/entity/NormalRsp.kt b/app/src/main/java/com/yingmao/clash/net/http/entity/NormalRsp.kt index 6729c3d..d97b3aa 100644 --- a/app/src/main/java/com/yingmao/clash/net/http/entity/NormalRsp.kt +++ b/app/src/main/java/com/yingmao/clash/net/http/entity/NormalRsp.kt @@ -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 ) \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/util/Utils.kt b/app/src/main/java/com/yingmao/clash/util/Utils.kt index 469c82b..82e567d 100644 --- a/app/src/main/java/com/yingmao/clash/util/Utils.kt +++ b/app/src/main/java/com/yingmao/clash/util/Utils.kt @@ -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" + } } \ No newline at end of file