diff --git a/app/src/main/java/io/nekohasekai/sagernet/ktx/Formats.kt b/app/src/main/java/io/nekohasekai/sagernet/ktx/Formats.kt index 3774719..6c0f8f4 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ktx/Formats.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ktx/Formats.kt @@ -17,6 +17,7 @@ import io.nekohasekai.sagernet.fmt.v2ray.parseV2Ray import moe.matsuri.nb4a.proxy.anytls.parseAnytls import moe.matsuri.nb4a.utils.JavaUtil.gson import moe.matsuri.nb4a.utils.Util +import okhttp3.HttpUrl import org.json.JSONArray import org.json.JSONException import org.json.JSONObject @@ -137,6 +138,14 @@ suspend fun parseProxies(text: String): List { entities.add(parseHttp(this)) }.onFailure { Logs.w(it) + val clashUrl = HttpUrl.Builder() + .scheme("https") + .host("install-config") + .addQueryParameter("url", this) + .build() + .toString() + .replaceFirst("https://", "clash://") + throw (SubscriptionFoundException(clashUrl)) } } else if (startsWith("vmess://")) { Logs.d("Try parse v2ray link: $this") diff --git a/app/src/main/java/io/nekohasekai/sagernet/ui/ScannerActivity.kt b/app/src/main/java/io/nekohasekai/sagernet/ui/ScannerActivity.kt index 8cda869..99f6f64 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ui/ScannerActivity.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ui/ScannerActivity.kt @@ -4,7 +4,6 @@ import android.Manifest import android.content.Intent import android.content.pm.ShortcutManager import android.graphics.ImageDecoder -import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.MediaStore @@ -13,6 +12,7 @@ import android.view.MenuItem import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.getSystemService +import androidx.core.net.toUri import com.google.zxing.Result import com.king.zxing.CameraScan import com.king.zxing.DefaultCameraScan @@ -138,7 +138,7 @@ class ScannerActivity : ThemedActivity(), } catch (e: SubscriptionFoundException) { startActivity(Intent(this@ScannerActivity, MainActivity::class.java).apply { action = Intent.ACTION_VIEW - data = Uri.parse(e.link) + data = e.link.toUri() }) } catch (e: Throwable) { Logs.w(e)