diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt index b9d7ffd7..0f217546 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt @@ -75,6 +75,7 @@ class UserAssetActivity : BaseActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) { R.id.add_file -> showFileChooser().let { true } R.id.add_url -> startActivity(Intent(this, UserAssetUrlActivity::class.java)).let { true } + R.id.add_qrcode -> importAssetFromQRcode().let { true } R.id.download_file -> downloadGeoFiles().let { true } else -> super.onOptionsItemSelected(item) } @@ -156,6 +157,40 @@ class UserAssetActivity : BaseActivity() { null } + private fun importAssetFromQRcode(): Boolean { + RxPermissions(this) + .request(Manifest.permission.CAMERA) + .subscribe { + if (it) + scanQRCodeForAssetURL.launch(Intent(this, ScannerActivity::class.java)) + else + toast(R.string.toast_permission_denied) + } + return true + } + + private val scanQRCodeForAssetURL = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (it.resultCode == RESULT_OK) { + importAsset(it.data?.getStringExtra("SCAN_RESULT")) + } + } + + private fun importAsset(url: String?): Boolean { + try { + if (!Utils.isValidUrl(url)) { + toast(R.string.toast_invalid_url) + return false + } + // Send URL to UserAssetUrlActivity for Processing + startActivity(Intent(this, UserAssetUrlActivity::class.java) + .putExtra(UserAssetUrlActivity.ASSET_URL_QRCODE, url)) + } catch (e: Exception) { + e.printStackTrace() + return false + } + return true + } + private fun downloadGeoFiles() { val dialog = AlertDialog.Builder(this) .setView(LayoutProgressBinding.inflate(layoutInflater).root) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetUrlActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetUrlActivity.kt index 7f630b54..98b4c86b 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetUrlActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetUrlActivity.kt @@ -14,6 +14,11 @@ import com.v2ray.ang.util.Utils import java.io.File class UserAssetUrlActivity : BaseActivity() { + // Receive QRcode URL from UserAssetActivity + companion object { + const val ASSET_URL_QRCODE = "ASSET_URL_QRCODE" + } + private val binding by lazy { ActivityUserAssetUrlBinding.inflate(layoutInflater) } var del_config: MenuItem? = null @@ -28,10 +33,15 @@ class UserAssetUrlActivity : BaseActivity() { title = getString(R.string.title_user_asset_add_url) val assetItem = MmkvManager.decodeAsset(editAssetId) - if (assetItem != null) { - bindingAsset(assetItem) - } else { - clearAsset() + val assetUrlQrcode = intent.getStringExtra(ASSET_URL_QRCODE) + val assetNameQrcode = File(assetUrlQrcode.toString()).name + when { + assetItem != null -> bindingAsset(assetItem) + assetUrlQrcode != null -> { + binding.etRemarks.setText(assetNameQrcode) + binding.etUrl.setText(assetUrlQrcode) + } + else -> clearAsset() } } diff --git a/V2rayNG/app/src/main/res/menu/menu_asset.xml b/V2rayNG/app/src/main/res/menu/menu_asset.xml index 72fa7c20..bec6fe3b 100644 --- a/V2rayNG/app/src/main/res/menu/menu_asset.xml +++ b/V2rayNG/app/src/main/res/menu/menu_asset.xml @@ -14,6 +14,10 @@ android:id="@+id/add_url" android:title="@string/menu_item_add_url" app:showAsAction="never" /> + إضافة أصل إضافة ملفات إضافة URL + مسح رمز الاستجابة السريعة (QRcode) URL تنزيل الملفات إضافة عنوان URL للأصل diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml index 353932ce..890a8c69 100644 --- a/V2rayNG/app/src/main/res/values-bn/strings.xml +++ b/V2rayNG/app/src/main/res/values-bn/strings.xml @@ -107,6 +107,7 @@ অ্যাসেট যোগ করুন ফাইল যোগ করুন URL যোগ করুন + QR কোড স্ক্যান করুন URL ফাইল ডাউনলোড করুন অ্যাসেট URL যোগ করুন diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index 6b87613f..43763a30 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -104,6 +104,7 @@ میزبان (SNI) (اختیاری) کپی فایل انجام نشد، لطفا از برنامه مدیریت فایل استفاده کنید افزودن فایل ‌ها + اسکن QRcode URL دانلود فایل‌ ها این عمل ممنوع است diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index 118365cd..cf3e153e 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -106,6 +106,7 @@ Добавить ресурс Добавить файлы Добавить URL + Сканирование QR-кода URL Загрузить файлы Добавить URL ресурса diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index 4dc71230..73944fc5 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -104,6 +104,7 @@ Host (SNI) (Không bắt buộc) Không thể sao chép tệp tin, hãy dùng trình quản lý tệp! Thêm tệp + Quét mã QR URL Tải xuống tệp tin Hành động này bị cấm! diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml index aaa7bea7..d4feabfe 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -104,6 +104,7 @@ Host(SNI)(可选) 失败, 请使用文件管理器 添加文件 + 扫描 QRcode URL 下载文件 禁止此项操作 diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml index 1828940b..54bff2d2 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -104,6 +104,7 @@ Host(SNI)(可選) 失敗,請使用檔案總管 新增檔案 + 掃描 QRcode URL 下載檔案 禁止此項操作 diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 59db241c..720c4c59 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -107,6 +107,7 @@ Add asset Add files Add URL + Scan QRcode URL Download files Add asset URL