diff --git a/app/build.gradle b/app/build.gradle
index 91c5cf6ca..4febeaf5e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -210,7 +210,7 @@ dependencies {
exclude group: 'org.ogce', module: 'xpp3' // Android comes with its own XmlPullParser
})
implementation 'org.conscrypt:conscrypt-android:2.5.3'
- implementation 'com.github.blikoon:QRCodeScanner:0.1.2'
+ implementation "com.github.nextcloud-deps:qrcodescanner:0.1.2.4" // "com.github.blikoon:QRCodeScanner:0.1.2"
implementation "androidx.camera:camera-core:${androidxCameraVersion}"
implementation "androidx.camera:camera-camera2:${androidxCameraVersion}"
diff --git a/app/src/main/java/com/nextcloud/talk/account/BrowserLoginActivity.kt b/app/src/main/java/com/nextcloud/talk/account/BrowserLoginActivity.kt
index 297ae0c71..f35607f20 100644
--- a/app/src/main/java/com/nextcloud/talk/account/BrowserLoginActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/account/BrowserLoginActivity.kt
@@ -16,7 +16,6 @@ import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import androidx.activity.OnBackPressedCallback
-import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.net.toUri
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
@@ -24,7 +23,6 @@ import androidx.work.OneTimeWorkRequest
import androidx.work.WorkInfo
import androidx.work.WorkManager
import autodagger.AutoInjector
-import com.blikoon.qrcodescanner.QrCodeActivity
import com.google.android.material.snackbar.Snackbar
import com.google.gson.JsonParser
import com.nextcloud.talk.R
@@ -133,8 +131,12 @@ class BrowserLoginActivity : BaseActivity() {
}
if (extras.containsKey(BundleKeys.KEY_FROM_QR)) {
- val intent = Intent(this, QrCodeActivity::class.java)
- qrScanResultLauncher.launch(intent)
+ val resultData = extras.getString(BundleKeys.KEY_FROM_QR)
+ try {
+ parseLoginDataUrl(resultData!!)
+ } catch (e: IllegalArgumentException) {
+ Log.e(TAG, "Error in scanning QR Code: $e")
+ }
} else {
anonymouslyPostLoginRequest()
}
@@ -150,30 +152,6 @@ class BrowserLoginActivity : BaseActivity() {
}
}
- private val qrScanResultLauncher =
- registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
- if (result.resultCode == RESULT_OK) {
- val data = result.data
-
- if (data == null) {
- return@registerForActivityResult
- }
-
- val resultData = data.getStringExtra("com.blikoon.qrcodescanner.got_qr_scan_relult")
-
- if (resultData == null || !resultData.startsWith("nc")) {
- Snackbar.make(binding.root, getString(R.string.qr_code_error), Snackbar.LENGTH_SHORT).show()
- return@registerForActivityResult
- }
-
- try {
- parseLoginDataUrl(resultData)
- } catch (e: IllegalArgumentException) {
- Log.e(TAG, "Error in scanning QR Code: $e")
- }
- }
- }
-
private fun anonymouslyPostLoginRequest() {
CoroutineScope(Dispatchers.IO).launch {
val url = "$baseUrl/index.php/login/v2"
diff --git a/app/src/main/java/com/nextcloud/talk/account/ServerSelectionActivity.kt b/app/src/main/java/com/nextcloud/talk/account/ServerSelectionActivity.kt
index 85006255e..f015b3926 100644
--- a/app/src/main/java/com/nextcloud/talk/account/ServerSelectionActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/account/ServerSelectionActivity.kt
@@ -26,7 +26,9 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.net.toUri
import androidx.core.os.bundleOf
import autodagger.AutoInjector
+import com.blikoon.qrcodescanner.QrCodeActivity
import com.github.dhaval2404.imagepicker.util.PermissionUtil
+import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.api.NcApi
@@ -413,14 +415,35 @@ class ServerSelectionActivity : BaseActivity() {
}
private fun startQRScanner() {
- val intent = Intent(this, BrowserLoginActivity::class.java)
- val bundle = bundleOf().apply {
- putBoolean(BundleKeys.KEY_FROM_QR, true)
- }
- intent.putExtras(bundle)
- startActivity(intent)
+ val intent = Intent(this, QrCodeActivity::class.java)
+ qrScanResultLauncher.launch(intent)
}
+ private val qrScanResultLauncher =
+ registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
+ if (result.resultCode == RESULT_OK) {
+ val data = result.data
+
+ if (data == null) {
+ return@registerForActivityResult
+ }
+
+ val resultData = data.getStringExtra(QR_URI)
+
+ if (resultData == null || !resultData.startsWith("nc")) {
+ Snackbar.make(binding.root, getString(R.string.qr_code_error), Snackbar.LENGTH_SHORT).show()
+ return@registerForActivityResult
+ }
+
+ val intent = Intent(this, BrowserLoginActivity::class.java)
+ val bundle = bundleOf().apply {
+ putString(BundleKeys.KEY_FROM_QR, resultData)
+ }
+ intent.putExtras(bundle)
+ startActivity(intent)
+ }
+ }
+
public override fun onDestroy() {
super.onDestroy()
dispose()
@@ -439,5 +462,6 @@ class ServerSelectionActivity : BaseActivity() {
companion object {
private val TAG = ServerSelectionActivity::class.java.simpleName
const val MIN_SERVER_MAJOR_VERSION = 13
+ private const val QR_URI = "com.blikoon.qrcodescanner.got_qr_scan_relult"
}
}
diff --git a/app/src/main/res/layout/activity_server_selection.xml b/app/src/main/res/layout/activity_server_selection.xml
index 41d76fb2c..f32a0c85f 100644
--- a/app/src/main/res/layout/activity_server_selection.xml
+++ b/app/src/main/res/layout/activity_server_selection.xml
@@ -152,15 +152,15 @@
tools:text="@string/nc_server_unsupported" />
-
+ android:layout_width="@dimen/avatar_size"
+ android:layout_height="@dimen/avatar_size"
+ android:scaleType="fitXY"
+ android:background="@color/transparent"
+ android:contentDescription="@string/scan_qr_code"
+ android:src="@drawable/outline_qr_code_24"
+ app:tint="@color/white" />
+
+sub 811B3B85BC31841F
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFHW7ksBCADGzo3LGVyWpBWqxRQlGhpQ9YNav7jiR5WSLnatr8chZx+ldy5j
+KquO7GHO0qaHGXyc/CKeKH9Eey0mH4EcvOvEhBOE27Fnuw2NppxQjxXyhYTfvr6q
+CHGN+lTORVC3zD6UkMm2R92zNI+ZGWqK2zND5/RZQMW4JNH/Y4ZA6t+fm+dHm/Q5
+Mn/2XEnMnDiuJGnIwb6+sgH4GHdXkzGl+/grayerAp52HWGmKo3TWWtxdZQcdZe7
+spaLlVJEfw5K7uwpR0JDwSHtak7gfs613n1VuQeT9ZA/CnBk0L1JkkSezPO0NFxL
+ONjrQA6zBA6apJsdDQYgg55xtFaAWUfBAV37ABEBAAG0JFNlYW4gT3dlbiAoWlhp
+bmcpIDxzcm93ZW5AZ21haWwuY29tPrkBDQRR1u5LAQgArA+334bZKR9IOvArfF6T
+Yo1gx1wQjiFrbl3rcNrkADzu9/h5PbvkLma1zTSYUo5VZPIn0HbX+GctInY9AkjG
+sc3OrBmPi2FI/KOUXnMCmd1ShyphdB5CJjG2VpR4ejG/I1YyMQ2ABWGes1IQJNPs
+Hf1PXkJ2NA1gCxD+oAT9RgdXZBolln+TL3sYV4Z0EWhEL+yPjxInvFpabZErssim
+tRRrfSuT/wczrLt46zTgmtEKJ7udp6kzC3Nmut6IozlBr5qcEOTdiH6+BxgvW4hH
+uqANx4PzVWCCqwTxuiME/Q5kr45tgawSSoIsMAZaPGqeNluXap9qEsXPd3SsZUfg
+IQARAQABiQEfBBgBCgAJBQJR1u5LAhsMAAoJEPbOlpXJMYQGP2AH/jkwFM70jQCz
+uyMJNX4uHlmP37TNq8n2WxCNb5rQrXJ7UQ/3FSOiF86PRhOYAJHz0aEKWjQG+gr2
+aXc1HZr9g3AB5dLVxJ27SNgrV7Bvw1fI8NvYp+XyDodbQzyjavuslkf6BrQ9CSer
+R3WahwNtscMXYCi08f9dB1hooKmjkqgHGE+WHvs5zxtVnmdQ9Oaeu7IYYkhSAFA1
+Pdb2T90L+0xno4kCXaN7Mlw2ffxV53eLDq3fCoO4wkmVdjHjNc6Cq2qa7ntPo1wS
+BEhqoEjsNLqVXYq/cm7h+X5AwuLgkYCqA/TOjClEe8C/rVLVj9++Qw2lgbiUC6ry
+lkXgEU5D+DY=
+=6M1h
+-----END PGP PUBLIC KEY BLOCK-----
+
pub F6D4A1D411E9D1AE
uid Christopher Povirk
@@ -5092,6 +5120,34 @@ vzqZL9WH1qfOB26bczhzqYBdpE3HRRqvOaFo2o7Rm9biGIJ/QqTk9C0xcI1/5BNv
=tT4f
-----END PGP PUBLIC KEY BLOCK-----
+pub 479D601F3A7B5C1A
+uid AJ Alt
+
+sub 868FF6CCEF26A83C
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBF5CDMYBCADC1/aWU6ZbGZEphRbmjUPNfqh3N5goSnDCou97mmQ9Uq8iBuKS
+UXJnGSOHudXK56f+Drx5lGZdLAzveZdqaqb1o3yLFO3PJxwj3Ulhab3O3uTG2eR0
+2Xo7GKjRW13kEfphJrfVIaQq/TiyIG8IQ1dbm9Vuzc5NLDIeC4jxYD2S3hUqCLGQ
+BiZAEH9un2cPax+hiT+9MGzdfQwdVrSQ9aEA9mtMhEGsk80XtxXJnd+hw2va6l5s
+lSErmH5nMtyKh/n9uo/ap1CfPl98n5VUI8dDtUfWVrqRrkyHgdX+MII0t0nABV5X
+rJLneg4dVy5Yw/+FVbLWB1Ta21reyytcIYQXABEBAAG0J0FKIEFsdCA8YWphbHRA
+dXNlcnMubm9yZXBseS5naXRodWIuY29tPrkBDQReQgzGAQgA1oQHEM6wP40xPfpa
+YBBRAWVoEj/CbAV6BooApSqQkV0cocM9wK905az2FmlKn4WTZyNwiA2eHjHlevsI
+jKuHJWhSDVhulcKDi0cD6wTcjctcDWm7M3tvaICbieZQXPH7lju5Ct80kBo5ojdJ
+oXGD72kVhSuiF8vOrAOiLOXP8+bpCpY4+LZ4qt3XjSnrkZq+h/vcy9crwuzuFlSL
+wMRltOvfirrK/CSQZZtqG2PbT30CWFQ61DLo4DkXeNG1fKpnOaDAMaCedt+pNCAQ
+1Vdzy1vT9b85LtOH/CmhumjM3S6x/VWwWZVBXi2xVLFCkm3LlWioSvVs6Na0Vvaq
+0WDsbwARAQABiQE2BBgBCAAgFiEEA8EjA4wgqunihshXR51gHzp7XBoFAl5CDMYC
+GwwACgkQR51gHzp7XBpoYQgAjnYuxyXaFSbCc2EFWDrBA8+OnlbSgJ3etaIOoLQH
++Czv6+wLYc9snZDBm+IvbzEi3tXfi1TKcRI5ii9wDkti0KcVFrR2tpuXDLWYIF92
+cSC7VyBiyT/aZpm0zX8qP8tjRZvy7mewbnoit1R6ea5UifSLvO0bHqNoswfgv90s
+rnuUYMY8tv1sSo4j0f0zre/k4QT8sCTeMDsLsviMIvy1Wls1IPRo1SW1euGGGvCo
+bxgke8Dw5QgumudwPqehOZVOkIbuddgcur55ZFFeitMOqdRoXkrGod9v6hYY1Jz8
+W/Y2tzZmWsedFIc4ahuAeZG6cH6Ac8prHrQEz6lSbZ0flg==
+=td3S
+-----END PGP PUBLIC KEY BLOCK-----
+
pub 4B1E11D5A4B91E89
uid Adam Cozzette
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index fbe238c2e..7589cd678 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -301,6 +301,7 @@
+
@@ -11963,6 +11964,14 @@
+
+
+
+
+
+
+
+