From 14ff9eb5274f0b3a0bc91a950ed0fb2b6bc456dd Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Thu, 20 Mar 2025 14:37:38 +0800 Subject: [PATCH] Optimize and improve PerAppProxyActivity --- .../java/com/v2ray/ang/ui/PerAppProxyActivity.kt | 15 ++++++++++----- .../src/main/java/com/v2ray/ang/util/HttpUtil.kt | 10 +++++----- .../src/main/res/layout/activity_bypass_list.xml | 16 ++++++++-------- 3 files changed, 23 insertions(+), 18 deletions(-) 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 e1b6f3b3..e286034b 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 @@ -5,11 +5,8 @@ import android.text.TextUtils import android.util.Log import android.view.Menu import android.view.MenuItem -import android.view.View import androidx.appcompat.widget.SearchView import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import androidx.recyclerview.widget.LinearLayoutManager import com.v2ray.ang.AppConfig import com.v2ray.ang.AppConfig.ANG_PACKAGE import com.v2ray.ang.R @@ -18,6 +15,7 @@ import com.v2ray.ang.dto.AppInfo import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.v2RayApplication import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.util.AppManagerUtil import com.v2ray.ang.util.HttpUtil import com.v2ray.ang.util.Utils @@ -48,7 +46,7 @@ class PerAppProxyActivity : BaseActivity() { val blacklist = MmkvManager.decodeSettingsStringSet(AppConfig.PREF_PER_APP_PROXY_SET) val apps = withContext(Dispatchers.IO) { val appsList = AppManagerUtil.loadNetworkAppList(this@PerAppProxyActivity) - + if (blacklist != null) { appsList.forEach { app -> app.isSelected = if (blacklist.contains(app.packageName)) 1 else 0 @@ -152,13 +150,20 @@ class PerAppProxyActivity : BaseActivity() { private fun selectProxyApp() { toast(R.string.msg_downloading_content) + binding.pbWaiting.show() + val url = AppConfig.androidpackagenamelistUrl lifecycleScope.launch(Dispatchers.IO) { - val content = HttpUtil.getUrlContent(url, 5000) + var content = HttpUtil.getUrlContent(url, 5000) + if (content.isNullOrEmpty()) { + val httpPort = SettingsManager.getHttpPort() + content = HttpUtil.getUrlContent(url, 5000, httpPort) ?: "" + } launch(Dispatchers.Main) { Log.d(ANG_PACKAGE, content) selectProxyApp(content, true) toast(R.string.toast_success) + binding.pbWaiting.hide() } } } 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 2f5e506c..135353ad 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 @@ -26,18 +26,18 @@ object HttpUtil { * * @param url The URL to fetch content from. * @param timeout The timeout value in milliseconds. + * @param httpPort The HTTP port to use. * @return The content of the URL as a string. */ - fun getUrlContent(url: String, timeout: Int): String { - var result: String = "" - val conn = createProxyConnection(url, 0, timeout, timeout) ?: return result + fun getUrlContent(url: String, timeout: Int, httpPort: Int = 0): String? { + val conn = createProxyConnection(url, httpPort, timeout, timeout) ?: return null try { - result = conn.inputStream.bufferedReader().readText() + return conn.inputStream.bufferedReader().readText() } catch (_: Exception) { } finally { conn.disconnect() } - return result + return null } /** diff --git a/V2rayNG/app/src/main/res/layout/activity_bypass_list.xml b/V2rayNG/app/src/main/res/layout/activity_bypass_list.xml index a0b9d459..e40edd72 100644 --- a/V2rayNG/app/src/main/res/layout/activity_bypass_list.xml +++ b/V2rayNG/app/src/main/res/layout/activity_bypass_list.xml @@ -7,6 +7,14 @@ android:fitsSystemWindows="true" android:orientation="vertical"> + + - -