diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScannerActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScannerActivity.kt index e0053b4b..5c7e3f1b 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScannerActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScannerActivity.kt @@ -74,19 +74,17 @@ class ScannerActivity : BaseActivity() { } RxPermissions(this) .request(permission) - .subscribe { - if (it) { - try { - showFileChooser() - } catch (e: Exception) { - e.printStackTrace() - } - } else + .subscribe { granted -> + if (granted) { + showFileChooser() + } else { toast(R.string.toast_permission_denied) + } } true } + else -> super.onOptionsItemSelected(item) } @@ -107,13 +105,21 @@ class ScannerActivity : BaseActivity() { val uri = it.data?.data if (it.resultCode == RESULT_OK && uri != null) { try { - val bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(uri)) + val inputStream = contentResolver.openInputStream(uri) + val bitmap = BitmapFactory.decodeStream(inputStream) + inputStream?.close() + val text = QRCodeDecoder.syncDecodeQRCode(bitmap) - finished(text.orEmpty()) + if (text.isNullOrEmpty()) { + toast(R.string.toast_decoding_failed) + } else { + finished(text) + } } catch (e: Exception) { e.printStackTrace() - toast(e.message.toString()) + toast(R.string.toast_decoding_failed) } } } + }