Add conditional process routing and routing strings

This commit is contained in:
2dust committed 2026-04-16 09:56:35 +08:00
1 parent 04ac6cb2d7
commit fd57019e73
9 files changed
+91 -15

No files matched your search

@@ -2,6 +2,7 @@ package com.v2ray.ang.handler
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
@@ -472,6 +473,28 @@ object SettingsManager {
return mode == null || mode == VPN
}
/**
* Check if process routing can be used.
*/
fun canUseProcessRouting(): Boolean {
// Android 10+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
return false
}
// Must xray tun
if (isUsingHevTun()) {
return false
}
// Must have route only enabled
if (MmkvManager.decodeSettingsBool(AppConfig.PREF_ROUTE_ONLY_ENABLED, false) == false) {
return false
}
return true
}
/**
* Ensure default settings are present in MMKV.
*/
@@ -498,12 +498,16 @@ object V2rayConfigManager {
rule.ip = updatedIpList
}
// Convert process package names to UIDs
rule.process?.let { processList ->
if (processList.isNotEmpty()) {
val uids = PackageUidResolver.packageNamesToUids(context, processList)
rule.process = uids.ifEmpty { null }
if (SettingsManager.canUseProcessRouting()) {
// Convert process package names to UIDs
rule.process?.let { processList ->
if (processList.isNotEmpty()) {
val uids = PackageUidResolver.packageNamesToUids(context, processList)
rule.process = uids.ifEmpty { null }
}
}
} else {
rule.process = null
}
v2rayConfig.routing.rules.add(rule)
@@ -35,6 +35,10 @@ class RoutingEditActivity : BaseActivity() {
} else {
clearServer()
}
SettingsManager.canUseProcessRouting().let { canUse ->
binding.etProcess.isEnabled = canUse
}
}
private fun bindingServer(rulesetItem: RulesetItem): Boolean {
@@ -331,6 +331,15 @@
<string name="routing_settings_import_rulesets_from_qrcode">استيراد مجموعة قواعد من رمز الاستجابة السريعة</string>
<string name="routing_settings_export_rulesets_to_clipboard">Export ruleset to clipboard</string>
<string name="routing_settings_locked">Locked, keep this rule when import presets</string>
<string name="routing_settings_domain">domain</string>
<string name="routing_settings_ip">ip</string>
<string name="routing_settings_process">process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+)</string>
<string name="routing_settings_port">port</string>
<string name="routing_settings_protocol">protocol</string>
<string name="routing_settings_protocol_tip">[http,tls,bittorrent]</string>
<string name="routing_settings_network">network</string>
<string name="routing_settings_network_tip">[udp|tcp]</string>
<string name="routing_settings_outbound_tag">outboundTag</string>
<string name="connection_test_pending">التحقق من الاتصال</string>
<string name="connection_test_testing">يجري الاختبار…</string>
@@ -330,6 +330,15 @@
<string name="routing_settings_import_rulesets_from_qrcode">QRcode থেকে রুলসেট আমদানি করুন</string>
<string name="routing_settings_export_rulesets_to_clipboard">Export ruleset to clipboard</string>
<string name="routing_settings_locked">Locked, keep this rule when import presets</string>
<string name="routing_settings_domain">domain</string>
<string name="routing_settings_ip">ip</string>
<string name="routing_settings_process">process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+)</string>
<string name="routing_settings_port">port</string>
<string name="routing_settings_protocol">protocol</string>
<string name="routing_settings_protocol_tip">[http,tls,bittorrent]</string>
<string name="routing_settings_network">network</string>
<string name="routing_settings_network_tip">[udp|tcp]</string>
<string name="routing_settings_outbound_tag">outboundTag</string>
<string name="connection_test_pending">সংযোগ পরীক্ষা করুন</string>
<string name="connection_test_testing">পরীক্ষা চলছে…</string>
@@ -331,6 +331,15 @@
<string name="routing_settings_import_rulesets_from_qrcode">Nhập bộ quy tắc từ QRcode</string>
<string name="routing_settings_export_rulesets_to_clipboard">Export ruleset to clipboard</string>
<string name="routing_settings_locked">Locked, keep this rule when import presets</string>
<string name="routing_settings_domain">domain</string>
<string name="routing_settings_ip">ip</string>
<string name="routing_settings_process">process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+)</string>
<string name="routing_settings_port">port</string>
<string name="routing_settings_protocol">protocol</string>
<string name="routing_settings_protocol_tip">[http,tls,bittorrent]</string>
<string name="routing_settings_network">network</string>
<string name="routing_settings_network_tip">[udp|tcp]</string>
<string name="routing_settings_outbound_tag">outboundTag</string>
<string name="connection_test_pending">Kiểm tra kết nối</string>
<string name="connection_test_testing">Đang kiểm tra kết nối mạng...</string>
@@ -329,6 +329,15 @@
<string name="routing_settings_import_rulesets_from_qrcode">从 QRcode 导入规则集</string>
<string name="routing_settings_export_rulesets_to_clipboard">导出规则集至剪贴板</string>
<string name="routing_settings_locked">锁定中,导入预设时不删除此规则</string>
<string name="routing_settings_domain">domain</string>
<string name="routing_settings_ip">ip</string>
<string name="routing_settings_process">process (包名 — 仅在使用 Xray 的 TUN、开启 routeOnly 且 Android 10+ 时可用)</string>
<string name="routing_settings_port">port</string>
<string name="routing_settings_protocol">protocol</string>
<string name="routing_settings_protocol_tip">[http,tls,bittorrent]</string>
<string name="routing_settings_network">network</string>
<string name="routing_settings_network_tip">[udp|tcp]</string>
<string name="routing_settings_outbound_tag">outboundTag</string>
<string name="connection_test_pending">"检查网络连接"</string>
<string name="connection_test_testing">"测试中…"</string>
@@ -329,6 +329,15 @@
<string name="routing_settings_import_rulesets_from_qrcode">從二維碼匯入規則集</string>
<string name="routing_settings_export_rulesets_to_clipboard">匯出規則集至剪貼簿</string>
<string name="routing_settings_locked">鎖定中,匯入預設時不刪除此規則</string>
<string name="routing_settings_domain">domain</string>
<string name="routing_settings_ip">ip</string>
<string name="routing_settings_process">process (套件名稱 — 僅在使用 Xray 的 TUN、開啟 routeOnly 且 Android 10+ 時可用)</string>
<string name="routing_settings_port">port</string>
<string name="routing_settings_protocol">protocol</string>
<string name="routing_settings_protocol_tip">[http,tls,bittorrent]</string>
<string name="routing_settings_network">network</string>
<string name="routing_settings_network_tip">[udp|tcp]</string>
<string name="routing_settings_outbound_tag">outboundTag</string>
<string name="connection_test_pending">"測試連線能力"</string>
<string name="connection_test_testing">"測試中……"</string>
+10 -10
View File
@@ -68,7 +68,7 @@
<string name="server_lab_path_kcp">kcp seed</string>
<string name="server_lab_path_grpc">gRPC serviceName</string>
<string name="server_lab_stream_security">TLS</string>
<string name="server_lab_stream_fingerprint" translatable="false">Fingerprint</string>
<string name="server_lab_stream_fingerprint">Fingerprint</string>
<string name="server_lab_stream_alpn">Alpn</string>
<string name="server_lab_allow_insecure">allowInsecure</string>
<string name="server_lab_sni">SNI</string>
@@ -334,15 +334,15 @@
<string name="routing_settings_import_rulesets_from_qrcode">Import ruleset from QRcode</string>
<string name="routing_settings_export_rulesets_to_clipboard">Export ruleset to clipboard</string>
<string name="routing_settings_locked">Locked, keep this rule when import presets</string>
<string name="routing_settings_domain" translatable="false">domain</string>
<string name="routing_settings_ip" translatable="false">ip</string>
<string name="routing_settings_process" translatable="false">process (Package Name, Only supports xray tun)</string>
<string name="routing_settings_port" translatable="false">port</string>
<string name="routing_settings_protocol" translatable="false">protocol</string>
<string name="routing_settings_protocol_tip" translatable="false">[http,tls,bittorrent]</string>
<string name="routing_settings_network" translatable="false">network</string>
<string name="routing_settings_network_tip" translatable="false">[udp|tcp]</string>
<string name="routing_settings_outbound_tag" translatable="false">outboundTag</string>
<string name="routing_settings_domain">domain</string>
<string name="routing_settings_ip">ip</string>
<string name="routing_settings_process">process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+)</string>
<string name="routing_settings_port">port</string>
<string name="routing_settings_protocol">protocol</string>
<string name="routing_settings_protocol_tip">[http,tls,bittorrent]</string>
<string name="routing_settings_network">network</string>
<string name="routing_settings_network_tip">[udp|tcp]</string>
<string name="routing_settings_outbound_tag">outboundTag</string>
<string name="connection_test_pending">Check Connectivity</string>
<string name="connection_test_testing">Testing…</string>