diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt index c7b71e59..83cc4a76 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt @@ -22,7 +22,7 @@ class UrlSchemeActivity : BaseActivity() { if (action == Intent.ACTION_SEND) { if ("text/plain" == type) { intent.getStringExtra(Intent.EXTRA_TEXT)?.let { - parseUri(it) + parseUri(it, null) } } } else if (action == Intent.ACTION_VIEW) { @@ -30,13 +30,13 @@ class UrlSchemeActivity : BaseActivity() { "install-config" -> { val uri: Uri? = intent.data val shareUrl = uri?.getQueryParameter("url") ?: "" - parseUri(shareUrl) + parseUri(shareUrl, uri?.fragment) } "install-sub" -> { val uri: Uri? = intent.data val shareUrl = uri?.getQueryParameter("url") ?: "" - parseUri(shareUrl) + parseUri(shareUrl, uri?.fragment) } else -> { @@ -53,15 +53,19 @@ class UrlSchemeActivity : BaseActivity() { } } - private fun parseUri(uriString: String?) { + private fun parseUri(uriString: String?, fragment: String?) { if (uriString.isNullOrEmpty()) { return } Log.d("UrlScheme", uriString) - val decodedUrl = URLDecoder.decode(uriString, "UTF-8") + var decodedUrl = URLDecoder.decode(uriString, "UTF-8") val uri = Uri.parse(decodedUrl) if (uri != null) { + if (uri.fragment.isNullOrEmpty() && !fragment.isNullOrEmpty()) { + decodedUrl += "#${fragment}" + } + Log.d("UrlScheme-decodedUrl", decodedUrl) val (count, countSub) = AngConfigManager.importBatchConfig(decodedUrl, "", false) if (count + countSub > 0) { toast(R.string.import_subscription_success) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/MmkvManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/MmkvManager.kt index 97ab05f6..29bcfa05 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/MmkvManager.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/MmkvManager.kt @@ -147,7 +147,7 @@ object MmkvManager { } val uri = URI(Utils.fixIllegalUrl(url)) val subItem = SubscriptionItem() - subItem.remarks = Utils.urlDecode(uri.fragment ?: "import sub") + subItem.remarks = uri.fragment ?: "import sub" subItem.url = url subStorage?.encode(Utils.getUuid(), Gson().toJson(subItem)) return 1