diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt index 56d68e86..7b02293d 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt @@ -10,8 +10,8 @@ object AppConfig { /** Directory names used in the app's file system. */ const val DIR_ASSETS = "assets" - const val WEBDAV_BACKUP_DIR = "backups" - const val WEBDAV_BACKUP_FILE_NAME = "backup_ng.zip" + const val WEBDAV_BACKUP_DIR = "backups" + const val WEBDAV_BACKUP_FILE_NAME = "backup_ng.zip" /** Legacy configuration keys. */ const val ANG_CONFIG = "ang_config" @@ -124,7 +124,8 @@ object AppConfig { const val TG_CHANNEL_URL = "https://t.me/github_2dust" const val DELAY_TEST_URL = "https://www.gstatic.com/generate_204" const val DELAY_TEST_URL2 = "https://www.google.com/generate_204" -// const val IP_API_URL = "https://speed.cloudflare.com/meta" + + // const val IP_API_URL = "https://speed.cloudflare.com/meta" const val IP_API_URL = "https://api.ip.sb/geoip" /** DNS server addresses. */ diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/MainAdapterListener.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/MainAdapterListener.kt index f2d07234..4feab496 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/MainAdapterListener.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/MainAdapterListener.kt @@ -2,7 +2,7 @@ package com.v2ray.ang.contracts import com.v2ray.ang.dto.ProfileItem -interface MainAdapterListener :BaseAdapterListener { +interface MainAdapterListener : BaseAdapterListener { fun onEdit(guid: String, position: Int, profile: ProfileItem) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/Tun2SocksControl.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/Tun2SocksControl.kt index a551cd16..dd8ecdc5 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/Tun2SocksControl.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/Tun2SocksControl.kt @@ -11,7 +11,7 @@ interface Tun2SocksControl { * This initializes the VPN tunnel and connects it to the SOCKS proxy. */ fun startTun2Socks() - + /** * Stops the tun2socks process and cleans up resources. */ diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt index 117786e8..b65d6827 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayConfig.kt @@ -318,6 +318,7 @@ data class V2rayConfig( ) } } + data class QuicParamsBean( var congestion: String? = null, var brutalUp: String? = null, diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/enums/EConfigType.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/enums/EConfigType.kt index b27feb64..f849e759 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/enums/EConfigType.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/enums/EConfigType.kt @@ -15,7 +15,7 @@ enum class EConfigType(val value: Int, val protocolScheme: String) { HYSTERIA2(9, AppConfig.HYSTERIA2), HYSTERIA(900, AppConfig.HYSTERIA), HTTP(10, AppConfig.HTTP), - POLICYGROUP (101, AppConfig.CUSTOM); + POLICYGROUP(101, AppConfig.CUSTOM); companion object { fun fromInt(value: Int) = entries.firstOrNull { it.value == value } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/CustomFmt.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/CustomFmt.kt index d574dae3..610500b4 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/CustomFmt.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/CustomFmt.kt @@ -12,7 +12,7 @@ object CustomFmt : FmtBase() { * @param str the JSON string to parse * @return the parsed ProfileItem object, or null if parsing fails */ - fun parse(str: String): ProfileItem? { + fun parse(str: String): ProfileItem { val config = ProfileItem.create(EConfigType.CUSTOM) val fullConfig = JsonUtil.fromJson(str, V2rayConfig::class.java) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/Hysteria2Fmt.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/Hysteria2Fmt.kt index 5e3a9671..ce5b6fd0 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/Hysteria2Fmt.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/Hysteria2Fmt.kt @@ -20,7 +20,7 @@ object Hysteria2Fmt : FmtBase() { * @param str the Hysteria2 URI string to parse * @return the parsed ProfileItem object, or null if parsing fails */ - fun parse(str: String): ProfileItem? { + fun parse(str: String): ProfileItem { var allowInsecure = MmkvManager.decodeSettingsBool(AppConfig.PREF_ALLOW_INSECURE, false) val config = ProfileItem.create(EConfigType.HYSTERIA2) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/ShadowsocksFmt.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/ShadowsocksFmt.kt index c05d5544..39ec0109 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/ShadowsocksFmt.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/ShadowsocksFmt.kt @@ -1,6 +1,5 @@ package com.v2ray.ang.fmt -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import com.v2ray.ang.dto.ProfileItem import com.v2ray.ang.dto.V2rayConfig.OutboundBean @@ -8,6 +7,7 @@ import com.v2ray.ang.enums.EConfigType import com.v2ray.ang.enums.NetworkType import com.v2ray.ang.extension.idnHost import com.v2ray.ang.handler.V2rayConfigManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import java.net.URI diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/TrojanFmt.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/TrojanFmt.kt index e5ee0549..f5de509d 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/TrojanFmt.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/TrojanFmt.kt @@ -18,7 +18,7 @@ object TrojanFmt : FmtBase() { * @param str the Trojan URI string to parse * @return the parsed ProfileItem object, or null if parsing fails */ - fun parse(str: String): ProfileItem? { + fun parse(str: String): ProfileItem { var allowInsecure = MmkvManager.decodeSettingsBool(AppConfig.PREF_ALLOW_INSECURE, false) val config = ProfileItem.create(EConfigType.TROJAN) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/VmessFmt.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/VmessFmt.kt index 1b1af3e6..065519f3 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/VmessFmt.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/VmessFmt.kt @@ -1,7 +1,6 @@ package com.v2ray.ang.fmt import android.text.TextUtils -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import com.v2ray.ang.dto.ProfileItem import com.v2ray.ang.dto.V2rayConfig.OutboundBean @@ -13,6 +12,7 @@ import com.v2ray.ang.extension.nullIfBlank import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.V2rayConfigManager import com.v2ray.ang.util.JsonUtil +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import java.net.URI diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/WireguardFmt.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/WireguardFmt.kt index 83c66e46..be27c3d0 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/WireguardFmt.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/WireguardFmt.kt @@ -46,7 +46,7 @@ object WireguardFmt : FmtBase() { * @param str the Wireguard configuration file string to parse * @return the parsed ProfileItem object, or null if parsing fails */ - fun parseWireguardConfFile(str: String): ProfileItem? { + fun parseWireguardConfFile(str: String): ProfileItem { val config = ProfileItem.create(EConfigType.WIREGUARD) val interfaceParams: MutableMap = mutableMapOf() diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt index 0ae0c7e8..90fb96b3 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt @@ -3,7 +3,6 @@ package com.v2ray.ang.handler import android.content.Context import android.graphics.Bitmap import android.text.TextUtils -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import com.v2ray.ang.AppConfig.HY2 import com.v2ray.ang.R @@ -23,6 +22,7 @@ import com.v2ray.ang.fmt.VmessFmt import com.v2ray.ang.fmt.WireguardFmt import com.v2ray.ang.util.HttpUtil import com.v2ray.ang.util.JsonUtil +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.QRCodeDecoder import com.v2ray.ang.util.Utils import java.net.URI diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt index c33b9ebd..1fcfa8da 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt @@ -344,7 +344,7 @@ object MmkvManager { //region Subscriptions - private fun getSubscriptionId(subscriptionId: String?):String { + private fun getSubscriptionId(subscriptionId: String?): String { return subscriptionId?.ifEmpty { DEFAULT_SUBSCRIPTION_ID } ?: DEFAULT_SUBSCRIPTION_ID } @@ -374,7 +374,7 @@ object MmkvManager { decodeSubsList().forEach { key -> val json = subStorage.decodeString(key) if (!json.isNullOrBlank()) { - val item = JsonUtil.fromJson(json, SubscriptionItem::class.java)?: SubscriptionItem() + val item = JsonUtil.fromJson(json, SubscriptionItem::class.java) ?: SubscriptionItem() subscriptions.add(SubscriptionCache(key, item)) } } @@ -442,7 +442,7 @@ object MmkvManager { return if (json.isNullOrBlank()) { mutableListOf() } else { - JsonUtil.fromJson(json, Array::class.java)?.toMutableList()?: mutableListOf() + JsonUtil.fromJson(json, Array::class.java)?.toMutableList() ?: mutableListOf() } } @@ -460,7 +460,7 @@ object MmkvManager { assetStorage.allKeys()?.forEach { key -> val json = assetStorage.decodeString(key) if (!json.isNullOrBlank()) { - val item = JsonUtil.fromJson(json, AssetUrlItem::class.java)?: AssetUrlItem() + val item = JsonUtil.fromJson(json, AssetUrlItem::class.java) ?: AssetUrlItem() assetUrlItems.add(AssetUrlCache(key, item)) } } @@ -510,7 +510,7 @@ object MmkvManager { fun decodeRoutingRulesets(): MutableList? { val ruleset = settingsStorage.decodeString(PREF_ROUTING_RULESET) if (ruleset.isNullOrEmpty()) return null - return JsonUtil.fromJson(ruleset, Array::class.java)?.toMutableList()?: mutableListOf() + return JsonUtil.fromJson(ruleset, Array::class.java)?.toMutableList() ?: mutableListOf() } /** diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/NotificationManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/NotificationManager.kt index 7e09d01b..51c66edb 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/NotificationManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/NotificationManager.kt @@ -9,7 +9,6 @@ import android.content.Context import android.content.Intent import android.graphics.Color import android.os.Build -import com.v2ray.ang.util.LogUtil import androidx.annotation.RequiresApi import androidx.core.app.NotificationCompat import com.v2ray.ang.AppConfig @@ -17,6 +16,7 @@ import com.v2ray.ang.R import com.v2ray.ang.dto.ProfileItem import com.v2ray.ang.extension.toSpeedString import com.v2ray.ang.ui.MainActivity +import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SettingsManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SettingsManager.kt index a233fbf1..b61c0258 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SettingsManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SettingsManager.kt @@ -4,7 +4,6 @@ import android.content.Context import android.content.res.AssetManager import android.os.Build import android.text.TextUtils -import com.v2ray.ang.util.LogUtil import androidx.appcompat.app.AppCompatDelegate import com.v2ray.ang.AppConfig import com.v2ray.ang.AppConfig.ANG_PACKAGE @@ -28,6 +27,7 @@ import com.v2ray.ang.handler.MmkvManager.decodeSubscription import com.v2ray.ang.handler.MmkvManager.encodeSubscription import com.v2ray.ang.handler.MmkvManager.removeSubscription import com.v2ray.ang.util.JsonUtil +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import java.io.File import java.io.FileOutputStream @@ -224,7 +224,7 @@ object SettingsManager { * @param toPosition The position to swap to. */ fun swapSubscriptions(fromPosition: Int, toPosition: Int) { - val subsList = MmkvManager.decodeSubsList() + val subsList = decodeSubsList() if (subsList.isEmpty()) return Collections.swap(subsList, fromPosition, toPosition) @@ -500,7 +500,7 @@ object SettingsManager { */ private fun ensureDefaultSettings() { // Write defaults in the exact order requested by the user - ensureDefaultValue(AppConfig.PREF_MODE, AppConfig.VPN) + ensureDefaultValue(AppConfig.PREF_MODE, VPN) ensureDefaultValue(AppConfig.PREF_VPN_DNS, AppConfig.DNS_VPN) ensureDefaultValue(AppConfig.PREF_VPN_MTU, AppConfig.VPN_MTU.toString()) ensureDefaultValue(AppConfig.SUBSCRIPTION_AUTO_UPDATE_INTERVAL, AppConfig.SUBSCRIPTION_DEFAULT_UPDATE_INTERVAL) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt index 073c746a..2d9639ee 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt @@ -2,12 +2,12 @@ package com.v2ray.ang.handler import android.content.Context import android.os.SystemClock -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import com.v2ray.ang.R import com.v2ray.ang.dto.IPAPIInfo import com.v2ray.ang.util.HttpUtil import com.v2ray.ang.util.JsonUtil +import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.currentCoroutineContext import kotlinx.coroutines.isActive import java.io.IOException diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SubscriptionUpdater.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SubscriptionUpdater.kt index 2dcc4e5b..ce9e5305 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SubscriptionUpdater.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SubscriptionUpdater.kt @@ -5,13 +5,13 @@ import android.app.NotificationChannel import android.app.NotificationManager import android.content.Context import android.os.Build -import com.v2ray.ang.util.LogUtil import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.work.CoroutineWorker import androidx.work.WorkerParameters import com.v2ray.ang.AppConfig import com.v2ray.ang.R +import com.v2ray.ang.util.LogUtil object SubscriptionUpdater { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/UpdateCheckerManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/UpdateCheckerManager.kt index 4cc1608a..f4dd062d 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/UpdateCheckerManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/UpdateCheckerManager.kt @@ -2,7 +2,6 @@ package com.v2ray.ang.handler import android.content.Context import android.os.Build -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import com.v2ray.ang.BuildConfig import com.v2ray.ang.dto.CheckUpdateResult @@ -10,6 +9,7 @@ import com.v2ray.ang.dto.GitHubRelease import com.v2ray.ang.extension.concatUrl import com.v2ray.ang.util.HttpUtil import com.v2ray.ang.util.JsonUtil +import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.io.File diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayNativeManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayNativeManager.kt index 0c62ba7f..93038c33 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayNativeManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayNativeManager.kt @@ -1,8 +1,8 @@ package com.v2ray.ang.handler import android.content.Context -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import go.Seq import libv2ray.CoreCallbackHandler diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayServiceManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayServiceManager.kt index f86a29bb..90c4060e 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayServiceManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayServiceManager.kt @@ -9,7 +9,6 @@ import android.net.ConnectivityManager import android.os.Build import android.os.ParcelFileDescriptor import android.system.OsConstants -import com.v2ray.ang.util.LogUtil import androidx.core.content.ContextCompat import com.v2ray.ang.AppConfig import com.v2ray.ang.R @@ -19,8 +18,8 @@ import com.v2ray.ang.enums.EConfigType import com.v2ray.ang.extension.toast import com.v2ray.ang.service.V2RayProxyOnlyService import com.v2ray.ang.service.V2RayVpnService +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.MessageUtil -import com.v2ray.ang.util.PackageUidResolver import com.v2ray.ang.util.Utils import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -379,7 +378,7 @@ object V2RayServiceManager { private val cm: ConnectivityManager? = context.getSystemService(ConnectivityManager::class.java) override fun findProcessByConnection(network: String, srcIP: String, srcPort: Long, destIP: String, destPort: Long): Long { - if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.Q) return -1L + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) return -1L if (cm == null) return -1L val proto = when (network) { "tcp" -> OsConstants.IPPROTO_TCP diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt index eef992aa..6b8b3fe7 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt @@ -2,7 +2,6 @@ package com.v2ray.ang.handler import android.content.Context import android.text.TextUtils -import com.v2ray.ang.util.LogUtil import com.google.gson.JsonArray import com.v2ray.ang.AppConfig import com.v2ray.ang.dto.ConfigResult @@ -27,6 +26,7 @@ import com.v2ray.ang.fmt.VmessFmt import com.v2ray.ang.fmt.WireguardFmt import com.v2ray.ang.util.HttpUtil import com.v2ray.ang.util.JsonUtil +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.PackageUidResolver import com.v2ray.ang.util.Utils @@ -568,7 +568,7 @@ object V2rayConfigManager { ) } - if(SettingsManager.isVpnMode()) { + if (SettingsManager.isVpnMode()) { if (SettingsManager.isUsingHevTun()) { //hev-socks5-tunnel dns routing v2rayConfig.routing.rules.add( @@ -894,7 +894,7 @@ object V2rayConfigManager { } } - val lstSelector = listOf("proxy-") + val lstSelector = listOf("proxy-") when (config.policyGroupType) { // Least Ping goto else "1" -> { @@ -917,6 +917,7 @@ object V2rayConfigManager { ) ) } + "2" -> { // Random val balancer = V2rayConfig.RoutingBean.BalancerBean( @@ -928,6 +929,7 @@ object V2rayConfigManager { ) v2rayConfig.routing.balancers = listOf(balancer) } + "3" -> { // Round Robin val balancer = V2rayConfig.RoutingBean.BalancerBean( @@ -939,6 +941,7 @@ object V2rayConfigManager { ) v2rayConfig.routing.balancers = listOf(balancer) } + else -> { // Default: Least Ping val balancer = V2rayConfig.RoutingBean.BalancerBean( @@ -1244,28 +1247,34 @@ object V2rayConfigManager { headerType == "wechat-video" -> "header-wechat" else -> "header-$headerType" } - udpMaskList.add(StreamSettingsBean.FinalMaskBean.MaskBean( - type = kcpHeaderType, - settings = if (headerType == "dns" && !host.isNullOrEmpty()) { - StreamSettingsBean.FinalMaskBean.MaskBean.MaskSettingsBean( - domain = host - ) - } else { - null - } - )) + udpMaskList.add( + StreamSettingsBean.FinalMaskBean.MaskBean( + type = kcpHeaderType, + settings = if (headerType == "dns" && !host.isNullOrEmpty()) { + StreamSettingsBean.FinalMaskBean.MaskBean.MaskSettingsBean( + domain = host + ) + } else { + null + } + ) + ) } if (seed.isNullOrEmpty()) { - udpMaskList.add(StreamSettingsBean.FinalMaskBean.MaskBean( - type = "mkcp-original" - )) - } else { - udpMaskList.add(StreamSettingsBean.FinalMaskBean.MaskBean( - type = "mkcp-aes128gcm", - settings = StreamSettingsBean.FinalMaskBean.MaskBean.MaskSettingsBean( - password = seed + udpMaskList.add( + StreamSettingsBean.FinalMaskBean.MaskBean( + type = "mkcp-original" ) - )) + ) + } else { + udpMaskList.add( + StreamSettingsBean.FinalMaskBean.MaskBean( + type = "mkcp-aes128gcm", + settings = StreamSettingsBean.FinalMaskBean.MaskBean.MaskSettingsBean( + password = seed + ) + ) + ) } streamSettings.finalmask = StreamSettingsBean.FinalMaskBean( udp = udpMaskList.toList() @@ -1356,7 +1365,7 @@ object V2rayConfigManager { if (start != null && end != null) { val minStart = maxOf(5, start) val minEnd = maxOf(minStart, end) - "$minStart-$minEnd" + "$minStart-$minEnd" } else { "30" } @@ -1426,7 +1435,7 @@ object V2rayConfigManager { allowInsecure = allowInsecure, serverName = sni.nullIfBlank(), fingerprint = profileItem.fingerPrint.nullIfBlank(), - alpn = profileItem.alpn?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() }.takeIf { !it.isNullOrEmpty() }, + alpn = profileItem.alpn?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() }.takeIf { !it.isNullOrEmpty() }, echConfigList = profileItem.echConfigList.nullIfBlank(), echForceQuery = profileItem.echForceQuery.nullIfBlank(), pinnedPeerCertSha256 = profileItem.pinnedCA256.nullIfBlank(), diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/WebDavManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/WebDavManager.kt index bfedd81d..df1dd9dd 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/WebDavManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/WebDavManager.kt @@ -1,8 +1,8 @@ package com.v2ray.ang.handler -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import com.v2ray.ang.dto.WebDavConfig +import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import okhttp3.Credentials diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/helper/FileChooserHelper.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/helper/FileChooserHelper.kt index cbf0fc2d..0818ceb5 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/helper/FileChooserHelper.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/helper/FileChooserHelper.kt @@ -3,13 +3,13 @@ package com.v2ray.ang.helper import android.content.ActivityNotFoundException import android.content.Intent import android.net.Uri -import com.v2ray.ang.util.LogUtil import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import com.v2ray.ang.AppConfig import com.v2ray.ang.R import com.v2ray.ang.extension.toast +import com.v2ray.ang.util.LogUtil /** * Helper for choosing and creating files using Android Storage Access Framework. diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/receiver/BootReceiver.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/receiver/BootReceiver.kt index 5e6b3d75..3d00f0eb 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/receiver/BootReceiver.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/receiver/BootReceiver.kt @@ -3,10 +3,10 @@ package com.v2ray.ang.receiver import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.V2RayServiceManager +import com.v2ray.ang.util.LogUtil class BootReceiver : BroadcastReceiver() { /** diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/ProcessService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/ProcessService.kt index cfa08d62..add806f4 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/ProcessService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/ProcessService.kt @@ -1,8 +1,8 @@ package com.v2ray.ang.service import android.content.Context -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig +import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/QSTileService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/QSTileService.kt index 9bfdb9c9..293097bd 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/QSTileService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/QSTileService.kt @@ -7,11 +7,11 @@ import android.content.IntentFilter import android.graphics.drawable.Icon import android.service.quicksettings.Tile import android.service.quicksettings.TileService -import com.v2ray.ang.util.LogUtil import androidx.core.content.ContextCompat import com.v2ray.ang.AppConfig import com.v2ray.ang.R import com.v2ray.ang.handler.V2RayServiceManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.MessageUtil import com.v2ray.ang.util.Utils import java.lang.ref.SoftReference diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt index 67317137..ecf81e70 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt @@ -2,11 +2,11 @@ package com.v2ray.ang.service import android.content.Context import android.os.ParcelFileDescriptor -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import com.v2ray.ang.contracts.Tun2SocksControl import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsManager +import com.v2ray.ang.util.LogUtil import java.io.File /** @@ -22,9 +22,11 @@ class TProxyService( @JvmStatic @Suppress("FunctionName") private external fun TProxyStartService(configPath: String, fd: Int) + @JvmStatic @Suppress("FunctionName") private external fun TProxyStopService() + @JvmStatic @Suppress("FunctionName") private external fun TProxyGetStats(): LongArray? diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayProxyOnlyService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayProxyOnlyService.kt index b1e60bbc..284160dd 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayProxyOnlyService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayProxyOnlyService.kt @@ -4,11 +4,11 @@ import android.app.Service import android.content.Context import android.content.Intent import android.os.IBinder -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import com.v2ray.ang.contracts.ServiceControl import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.handler.V2RayServiceManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.MyContextWrapper import java.lang.ref.SoftReference diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayVpnService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayVpnService.kt index 688f9886..343e3f4b 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayVpnService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayVpnService.kt @@ -14,7 +14,6 @@ import android.net.VpnService import android.os.Build import android.os.ParcelFileDescriptor import android.os.StrictMode -import com.v2ray.ang.util.LogUtil import androidx.annotation.RequiresApi import com.v2ray.ang.AppConfig import com.v2ray.ang.AppConfig.LOOPBACK @@ -25,6 +24,7 @@ import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.NotificationManager import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.handler.V2RayServiceManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.MyContextWrapper import com.v2ray.ang.util.Utils import java.lang.ref.SoftReference diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BackupActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BackupActivity.kt index 7012f5c3..f16ad52f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BackupActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BackupActivity.kt @@ -3,7 +3,6 @@ package com.v2ray.ang.ui import android.app.AlertDialog import android.content.Intent import android.os.Bundle -import com.v2ray.ang.util.LogUtil import androidx.core.content.FileProvider import androidx.lifecycle.lifecycleScope import com.tencent.mmkv.MMKV @@ -20,6 +19,7 @@ import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsChangeManager import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.handler.WebDavManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.ZipUtil import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -38,7 +38,7 @@ class BackupActivity : HelperBaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - //setContentView(binding.root) + //setContentView(binding.root) setContentViewWithToolbar(binding.root, showHomeAsUp = true, title = getString(R.string.title_configuration_backup_restore)) binding.layoutBackup.setOnClickListener { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseFragment.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseFragment.kt index 8938c169..4d18416e 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseFragment.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseFragment.kt @@ -39,7 +39,7 @@ abstract class BaseFragment : Fragment() { * @param drawableResId The resource ID of the drawable to be used as the divider. * @param orientation The orientation of the divider (DividerItemDecoration.VERTICAL or DividerItemDecoration.HORIZONTAL). */ - fun addCustomDividerToRecyclerView(recyclerView: RecyclerView, drawableResId: Int, orientation: Int = DividerItemDecoration.VERTICAL) { + fun addCustomDividerToRecyclerView(recyclerView: RecyclerView, drawableResId: Int, orientation: Int = DividerItemDecoration.VERTICAL) { // Get the drawable from resources val drawable = ContextCompat.getDrawable(requireContext(), drawableResId) requireNotNull(drawable) { "Drawable resource not found" } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/CheckUpdateActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/CheckUpdateActivity.kt index b86c4a13..3a69803a 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/CheckUpdateActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/CheckUpdateActivity.kt @@ -1,7 +1,6 @@ package com.v2ray.ang.ui import android.os.Bundle -import com.v2ray.ang.util.LogUtil import androidx.appcompat.app.AlertDialog import androidx.lifecycle.lifecycleScope import com.v2ray.ang.AppConfig @@ -15,6 +14,7 @@ import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.UpdateCheckerManager import com.v2ray.ang.handler.V2RayNativeManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import kotlinx.coroutines.launch @@ -58,8 +58,7 @@ class CheckUpdateActivity : BaseActivity() { } catch (e: Exception) { LogUtil.e(AppConfig.TAG, "Failed to check for updates: ${e.message}") toastError(e.message ?: getString(R.string.toast_failure)) - } - finally { + } finally { hideLoading() } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/GroupServerFragment.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/GroupServerFragment.kt index d9d1bc73..74b70431 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/GroupServerFragment.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/GroupServerFragment.kt @@ -2,7 +2,6 @@ package com.v2ray.ang.ui import android.content.Intent import android.os.Bundle -import com.v2ray.ang.util.LogUtil import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,6 +24,7 @@ import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.AngConfigManager import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.helper.SimpleItemTouchHelperCallback +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.viewmodel.MainViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/HelperBaseActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/HelperBaseActivity.kt index 43fc1076..a8bd3958 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/HelperBaseActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/HelperBaseActivity.kt @@ -20,9 +20,9 @@ import com.v2ray.ang.helper.QRCodeScannerHelper * - Provide QR code scanning helpers with camera permission handling. */ abstract class HelperBaseActivity : BaseActivity() { - private lateinit var fileChooser : FileChooserHelper - private lateinit var permissionRequester : PermissionHelper - private lateinit var qrCodeScanner : QRCodeScannerHelper + private lateinit var fileChooser: FileChooserHelper + private lateinit var permissionRequester: PermissionHelper + private lateinit var qrCodeScanner: QRCodeScannerHelper override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/LogcatRecyclerAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/LogcatRecyclerAdapter.kt index cb2ade8b..b77e870a 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/LogcatRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/LogcatRecyclerAdapter.kt @@ -1,11 +1,11 @@ package com.v2ray.ang.ui -import com.v2ray.ang.util.LogUtil import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.v2ray.ang.AppConfig import com.v2ray.ang.databinding.ItemRecyclerLogcatBinding +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.viewmodel.LogcatViewModel class LogcatRecyclerAdapter( diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainActivity.kt index be0719a3..7df9bfd8 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainActivity.kt @@ -5,7 +5,6 @@ import android.content.res.ColorStateList import android.net.Uri import android.net.VpnService import android.os.Bundle -import com.v2ray.ang.util.LogUtil import android.view.KeyEvent import android.view.Menu import android.view.MenuItem @@ -33,6 +32,7 @@ import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsChangeManager import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.handler.V2RayServiceManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import com.v2ray.ang.viewmodel.MainViewModel import kotlinx.coroutines.Dispatchers @@ -179,7 +179,7 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect binding.tvTestState.text = content } - private fun applyRunningState(isLoading: Boolean, isRunning: Boolean) { + private fun applyRunningState(isLoading: Boolean, isRunning: Boolean) { if (isLoading) { binding.fab.setImageResource(R.drawable.ic_fab_check) return diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt index 806d6323..ed3b9be9 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt @@ -113,7 +113,7 @@ class MainRecyclerAdapter( adapterListener?.onSelectServer(guid) } } - + } /** diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyActivity.kt index 5de52ec7..088e1d9a 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyActivity.kt @@ -3,7 +3,6 @@ package com.v2ray.ang.ui import android.annotation.SuppressLint import android.os.Bundle import android.text.TextUtils -import com.v2ray.ang.util.LogUtil import android.view.Menu import android.view.MenuItem import android.widget.Toast @@ -23,6 +22,7 @@ import com.v2ray.ang.handler.SettingsChangeManager import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.util.AppManagerUtil import com.v2ray.ang.util.HttpUtil +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import com.v2ray.ang.viewmodel.PerAppProxyViewModel import es.dmoral.toasty.Toasty @@ -133,6 +133,7 @@ class PerAppProxyActivity : BaseActivity() { allowPerAppProxy() true } + R.id.invert_selection -> { invertSelection() allowPerAppProxy() diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyAdapter.kt index 6f0d2e44..e534845f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyAdapter.kt @@ -11,7 +11,7 @@ import com.v2ray.ang.viewmodel.PerAppProxyViewModel class PerAppProxyAdapter( val apps: List, val viewModel: PerAppProxyViewModel -) :RecyclerView.Adapter() { +) : RecyclerView.Adapter() { companion object { private const val VIEW_TYPE_HEADER = 0 diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt index 1da5ab9e..335aa6c5 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt @@ -3,7 +3,6 @@ package com.v2ray.ang.ui import android.annotation.SuppressLint import android.content.Intent import android.os.Bundle -import com.v2ray.ang.util.LogUtil import android.view.Menu import android.view.MenuItem import androidx.activity.viewModels @@ -21,6 +20,7 @@ import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.helper.SimpleItemTouchHelperCallback import com.v2ray.ang.util.JsonUtil +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import com.v2ray.ang.viewmodel.RoutingSettingsViewModel import kotlinx.coroutines.Dispatchers diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt index f8bc1378..c603d88c 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt @@ -3,7 +3,6 @@ package com.v2ray.ang.ui import android.content.Intent import android.graphics.BitmapFactory import android.os.Bundle -import com.v2ray.ang.util.LogUtil import android.view.Menu import android.view.MenuItem import com.v2ray.ang.AppConfig @@ -11,6 +10,7 @@ import com.v2ray.ang.R import com.v2ray.ang.databinding.ActivityNoneBinding import com.v2ray.ang.extension.toast import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.QRCodeDecoder import io.github.g00fy2.quickie.QRResult import io.github.g00fy2.quickie.ScanCustomCode @@ -18,7 +18,7 @@ import io.github.g00fy2.quickie.config.BarcodeFormat import io.github.g00fy2.quickie.config.ScannerConfig class ScannerActivity : HelperBaseActivity() { - private val binding by lazy { ActivityNoneBinding.inflate(layoutInflater) } + private val binding by lazy { ActivityNoneBinding.inflate(layoutInflater) } private val scanQrCode = registerForActivityResult(ScanCustomCode(), ::handleResult) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerCustomConfigActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerCustomConfigActivity.kt index 92fdf0cb..3319dfb3 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerCustomConfigActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerCustomConfigActivity.kt @@ -2,7 +2,6 @@ package com.v2ray.ang.ui import android.os.Bundle import android.text.TextUtils -import com.v2ray.ang.util.LogUtil import android.view.Menu import android.view.MenuItem import androidx.appcompat.app.AlertDialog @@ -18,6 +17,7 @@ import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.fmt.CustomFmt import com.v2ray.ang.handler.AngConfigManager import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils class ServerCustomConfigActivity : BaseActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerGroupActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerGroupActivity.kt index bead1637..ff4639e2 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerGroupActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ServerGroupActivity.kt @@ -97,7 +97,7 @@ class ServerGroupActivity : BaseActivity() { config.subscriptionId = subscriptionId.orEmpty() } - config.description = "${binding.spPolicyGroupType.selectedItem} - ${binding.spPolicyGroupSubId.selectedItem} - ${config.policyGroupFilter}" + config.description = "${binding.spPolicyGroupType.selectedItem} - ${binding.spPolicyGroupSubId.selectedItem} - ${config.policyGroupFilter}" MmkvManager.encodeServerConfig(editGuid, config) toastSuccess(R.string.toast_success) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt index d5b500c2..6e04500e 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt @@ -3,7 +3,6 @@ package com.v2ray.ang.ui import android.annotation.SuppressLint import android.content.Intent import android.os.Bundle -import com.v2ray.ang.util.LogUtil import android.view.LayoutInflater import android.view.Menu import android.view.MenuItem @@ -21,6 +20,7 @@ import com.v2ray.ang.extension.toast import com.v2ray.ang.handler.AngConfigManager import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.helper.SimpleItemTouchHelperCallback +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.QRCodeDecoder import com.v2ray.ang.util.Utils import com.v2ray.ang.viewmodel.SubscriptionsViewModel diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt index 311c3b17..0c482499 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt @@ -5,9 +5,7 @@ import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView -import com.v2ray.ang.AppConfig import com.v2ray.ang.contracts.BaseAdapterListener import com.v2ray.ang.databinding.ItemRecyclerSubSettingBinding import com.v2ray.ang.helper.ItemTouchHelperAdapter diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/TaskerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/TaskerActivity.kt index a7f434bc..1918c1cf 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/TaskerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/TaskerActivity.kt @@ -3,7 +3,6 @@ package com.v2ray.ang.ui import android.content.Intent import android.os.Bundle import android.text.TextUtils -import com.v2ray.ang.util.LogUtil import android.view.Menu import android.view.MenuItem import android.view.View @@ -13,6 +12,7 @@ import com.v2ray.ang.AppConfig import com.v2ray.ang.R import com.v2ray.ang.databinding.ActivityTaskerBinding import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.util.LogUtil class TaskerActivity : BaseActivity() { private val binding by lazy { ActivityTaskerBinding.inflate(layoutInflater) } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UrlSchemeActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UrlSchemeActivity.kt index 84881b9f..d8358b92 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UrlSchemeActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UrlSchemeActivity.kt @@ -3,7 +3,6 @@ package com.v2ray.ang.ui import android.content.Intent import android.net.Uri import android.os.Bundle -import com.v2ray.ang.util.LogUtil import androidx.lifecycle.lifecycleScope import com.v2ray.ang.AppConfig import com.v2ray.ang.R @@ -11,6 +10,7 @@ import com.v2ray.ang.databinding.ActivityLogcatBinding import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toastError import com.v2ray.ang.handler.AngConfigManager +import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt index 6e06b9bf..c2f919db 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt @@ -6,7 +6,6 @@ import android.content.Intent import android.net.Uri import android.os.Bundle import android.provider.OpenableColumns -import com.v2ray.ang.util.LogUtil import android.view.Menu import android.view.MenuItem import androidx.activity.viewModels @@ -22,6 +21,7 @@ import com.v2ray.ang.extension.toastError import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import com.v2ray.ang.viewmodel.UserAssetViewModel import kotlinx.coroutines.Dispatchers diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetUrlActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetUrlActivity.kt index 7f48d8ed..9c45bae2 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetUrlActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetUrlActivity.kt @@ -2,7 +2,6 @@ package com.v2ray.ang.ui import android.os.Bundle import android.text.TextUtils -import com.v2ray.ang.util.LogUtil import android.view.Menu import android.view.MenuItem import androidx.appcompat.app.AlertDialog @@ -13,6 +12,7 @@ import com.v2ray.ang.dto.AssetUrlItem import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import java.io.File diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/util/HttpUtil.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/util/HttpUtil.kt index 8c2d8be7..863852db 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/util/HttpUtil.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/util/HttpUtil.kt @@ -1,6 +1,5 @@ package com.v2ray.ang.util -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import com.v2ray.ang.AppConfig.LOOPBACK import com.v2ray.ang.BuildConfig @@ -128,7 +127,7 @@ object HttpUtil { * @throws IOException If an I/O error occurs. */ @Throws(IOException::class) - fun getUrlContentWithUserAgent(url: String?, userAgent: String?, timeout: Int = 15000, httpPort: Int = 0): String { + fun getUrlContentWithUserAgent(url: String?, userAgent: String?, timeout: Int = 15000, httpPort: Int = 0): String { var currentUrl = url var redirects = 0 val maxRedirects = 3 diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/util/PackageUidResolver.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/util/PackageUidResolver.kt index b9c310fd..42627c05 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/util/PackageUidResolver.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/util/PackageUidResolver.kt @@ -2,7 +2,6 @@ package com.v2ray.ang.util import android.content.Context import android.content.pm.PackageManager -import com.v2ray.ang.util.LogUtil import java.util.concurrent.ConcurrentHashMap object PackageUidResolver { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/util/Utils.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/util/Utils.kt index 7a20fb08..10e2e072 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/util/Utils.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/util/Utils.kt @@ -11,7 +11,6 @@ import android.os.LocaleList import android.provider.Settings import android.text.Editable import android.util.Base64 -import com.v2ray.ang.util.LogUtil import android.util.Patterns import android.webkit.URLUtil import androidx.core.content.ContextCompat @@ -139,7 +138,7 @@ object Utils { * @param removePadding * @return The base64 encoded string, or an empty string if encoding fails. */ - fun encode(text: String, removePadding : Boolean = false): String { + fun encode(text: String, removePadding: Boolean = false): String { return try { var encoded = Base64.encodeToString(text.toByteArray(Charsets.UTF_8), Base64.NO_WRAP) if (removePadding) { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/util/ZipUtil.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/util/ZipUtil.kt index 7a13f68c..ffeb5c93 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/util/ZipUtil.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/util/ZipUtil.kt @@ -1,6 +1,5 @@ package com.v2ray.ang.util -import com.v2ray.ang.util.LogUtil import com.v2ray.ang.AppConfig import java.io.BufferedOutputStream import java.io.File diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/LogcatViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/LogcatViewModel.kt index 70d6f457..c8ee8342 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/LogcatViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/LogcatViewModel.kt @@ -44,7 +44,7 @@ class LogcatViewModel : ViewModel() { logsetsAll.clear() filteredLogs = emptyList() } catch (e: IOException) { - LogUtil.e(AppConfig.TAG, "Failed to clear logcat", e) + LogUtil.e(AppConfig.TAG, "Failed to clear logcat", e) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt index 8e986f43..a2349217 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt @@ -6,7 +6,6 @@ import android.content.Context import android.content.Intent import android.content.IntentFilter import android.content.res.AssetManager -import com.v2ray.ang.util.LogUtil import androidx.core.content.ContextCompat import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData @@ -27,6 +26,7 @@ import com.v2ray.ang.handler.AngConfigManager import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.handler.SpeedtestManager +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.MessageUtil import com.v2ray.ang.util.Utils import kotlinx.coroutines.CoroutineScope diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/UserAssetViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/UserAssetViewModel.kt index aef584cd..902e325b 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/UserAssetViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/UserAssetViewModel.kt @@ -1,6 +1,5 @@ package com.v2ray.ang.viewmodel -import com.v2ray.ang.util.LogUtil import androidx.lifecycle.ViewModel import com.v2ray.ang.AppConfig import com.v2ray.ang.dto.AssetUrlCache @@ -8,6 +7,7 @@ import com.v2ray.ang.dto.AssetUrlItem import com.v2ray.ang.extension.concatUrl import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.util.HttpUtil +import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import java.io.File import java.io.FileOutputStream