From ade63d14852697fb1af002dbe928ebd514a2de0d Mon Sep 17 00:00:00 2001 From: 11111 <1364007522@qq.com> Date: Mon, 5 Jan 2026 12:23:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8C=E5=BB=BA=E8=BF=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yingmao/clash/act/MainActivity.kt | 2 ++ .../clash/fragment/home/HomeFragment.kt | 29 +++++++++++++++++++ .../main/java/com/yingmao/clash/util/Utils.kt | 7 +++++ 3 files changed, 38 insertions(+) diff --git a/app/src/main/java/com/yingmao/clash/act/MainActivity.kt b/app/src/main/java/com/yingmao/clash/act/MainActivity.kt index be0af5e..bed5760 100644 --- a/app/src/main/java/com/yingmao/clash/act/MainActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/MainActivity.kt @@ -33,6 +33,8 @@ import com.cncat.vpn.service.remote.IClashManager import com.cncat.vpn.service.remote.ILogObserver import com.cncat.vpn.service.remote.IProfileManager import com.cncat.vpn.service.remote.wrap +import com.cncat.vpn.service.util.importedDir +import com.cncat.vpn.service.util.processingDir import com.google.gson.Gson import com.google.gson.JsonArray import com.google.gson.JsonObject diff --git a/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt b/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt index d6c1e8c..362ab40 100644 --- a/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt +++ b/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt @@ -37,6 +37,8 @@ import com.cncat.vpn.core.Clash import com.cncat.vpn.core.model.TunnelState import com.cncat.vpn.service.model.Profile import com.cncat.vpn.service.store.ServiceStore +import com.cncat.vpn.service.util.importedDir +import com.cncat.vpn.service.util.processingDir import com.google.gson.Gson import com.google.gson.JsonParser import com.orhanobut.logger.Logger @@ -50,6 +52,7 @@ import com.yingmao.clash.act.MainActivity.Companion.isSubbed import com.yingmao.clash.act.MainActivity.Companion.newMainActGlo import com.yingmao.clash.act.MainActivity.Companion.newUuid import com.yingmao.clash.act.MainActivity.Companion.profileBinder +import com.yingmao.clash.act.MainActivity.Companion.setSub2 import com.yingmao.clash.act.MainActivity.Companion.subUrl import com.yingmao.clash.act.NodeGroupActivity import com.yingmao.clash.app.MainApplication @@ -69,6 +72,7 @@ import com.yingmao.clash.net.http.entity.ShowNode import com.yingmao.clash.util.ActivityResultLifecycle import com.yingmao.clash.util.CommonUtils import com.yingmao.clash.util.Utils +import com.yingmao.clash.util.Utils.isFileContentEmpty import com.yingmao.clash.util.startClashService import com.yingmao.clash.util.stopClashService import com.yingmao.clash.view.RxToast @@ -407,6 +411,31 @@ open class HomeFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispa } private fun startClash(isStart: Boolean) { + //这里需要判断一下config.yaml文件是否存在 + launch { + profileBinder?.let {profileManager -> + val pro = profileManager.queryAll().find { + it.name == Conf.getClashConfName(MainApplication.getApp()?.applicationContext) + } + val importConfig = requireActivity().importedDir + .resolve(pro?.uuid.toString()) + .resolve("config.yaml") + + val pendingConfig = requireActivity().processingDir + .resolve("config.yaml") + + val importConfigCheck = isFileContentEmpty(importConfig) + val pendingConfigCheck = isFileContentEmpty(pendingConfig) + AppLog.i("NewAccFragment", "importConfigCheck:${importConfigCheck} pendingConfigCheck::${pendingConfigCheck} ") + if(importConfigCheck||pendingConfigCheck){ + profileManager.queryAll().forEach { profile -> + profileManager.delete(profile.uuid) + } + setSub2(subUrl!!) + } + + } + } AppLog.i("NewAccFragment", "onClick startClash()") val nodeJson=serStore.nodes Log.d("nodeJson: ${nodeJson.isEmpty()}") 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 6c46531..8837a7d 100644 --- a/app/src/main/java/com/yingmao/clash/util/Utils.kt +++ b/app/src/main/java/com/yingmao/clash/util/Utils.kt @@ -20,6 +20,7 @@ import kotlinx.coroutines.withContext import okhttp3.OkHttpClient import okhttp3.Request import org.json.JSONObject +import java.io.File import java.net.Inet4Address import java.net.NetworkInterface import java.nio.charset.StandardCharsets @@ -383,4 +384,10 @@ object Utils { return caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } + fun isFileContentEmpty(file: File): Boolean { + if (!file.exists() || !file.isFile) return true + file.bufferedReader().useLines { lines -> + return lines.none { it.isNotBlank() } + } + } } \ No newline at end of file