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