diff --git a/build.gradle b/build.gradle
index ec15ebc22..06b97f395 100644
--- a/build.gradle
+++ b/build.gradle
@@ -39,7 +39,7 @@ allprojects {
ext {
androidApplicationId = 'org.cryptomator'
androidVersionCode = getVersionCode()
- androidVersionName = '1.6.1'
+ androidVersionName = '1.6.2'
}
repositories {
mavenCentral()
diff --git a/fastlane/metadata/android/de-DE/changelogs/default.txt b/fastlane/metadata/android/de-DE/changelogs/default.txt
index 74b767a73..6f60085e1 100644
--- a/fastlane/metadata/android/de-DE/changelogs/default.txt
+++ b/fastlane/metadata/android/de-DE/changelogs/default.txt
@@ -1 +1 @@
-- Kompatibilität zu Tresor-Format 8 verbessert
\ No newline at end of file
+- Fixed add pCloud connection on some devices
\ No newline at end of file
diff --git a/fastlane/metadata/android/en-US/changelogs/default.txt b/fastlane/metadata/android/en-US/changelogs/default.txt
index 532ed6a88..f686002aa 100644
--- a/fastlane/metadata/android/en-US/changelogs/default.txt
+++ b/fastlane/metadata/android/en-US/changelogs/default.txt
@@ -1 +1 @@
-- Enhanced compatibility to vault format 8
\ No newline at end of file
+- pCloud-Verbindung können wieder auf allen Geräten hinzugefügt werden
\ No newline at end of file
diff --git a/fastlane/release-notes.html b/fastlane/release-notes.html
index 700252e58..0761a6a16 100644
--- a/fastlane/release-notes.html
+++ b/fastlane/release-notes.html
@@ -1,3 +1,3 @@
- - Enhanced compatibility to vault format 8
+ - Fixed add pCloud connection on some devices
\ No newline at end of file
diff --git a/presentation/src/main/java/org/cryptomator/presentation/ui/activity/AuthenticatePCloudActivity.kt b/presentation/src/main/java/org/cryptomator/presentation/ui/activity/AuthenticatePCloudActivity.kt
index 0ec795142..59b610eeb 100644
--- a/presentation/src/main/java/org/cryptomator/presentation/ui/activity/AuthenticatePCloudActivity.kt
+++ b/presentation/src/main/java/org/cryptomator/presentation/ui/activity/AuthenticatePCloudActivity.kt
@@ -2,6 +2,7 @@ package org.cryptomator.presentation.ui.activity
import android.content.Intent
import android.net.Uri
+import android.os.Handler
import android.widget.Toast
import org.cryptomator.generator.Activity
import org.cryptomator.presentation.BuildConfig
@@ -13,6 +14,12 @@ import timber.log.Timber
@Activity
class AuthenticatePCloudActivity : BaseActivity() {
+ private val startAuthenticationRequestCode = 1232
+ private val redirectTimeoutAfterAuthenticationAndResumed = 1000L
+
+ private var cancelAuthenticationHandler: Handler = Handler()
+ private var oAuthResultReceived = false
+
override fun setupView() {
val uri = Uri.parse("https://my.pcloud.com/oauth2/authorize")
.buildUpon()
@@ -21,18 +28,27 @@ class AuthenticatePCloudActivity : BaseActivity() {
.appendQueryParameter("redirect_uri", "pcloudoauth://redirect")
.build()
- startActivityForResult(Intent(Intent.ACTION_VIEW, uri), 25)
+ startActivityForResult(Intent(Intent.ACTION_VIEW, uri), startAuthenticationRequestCode)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
super.onActivityResult(requestCode, resultCode, intent)
- finish()
+ if (requestCode == startAuthenticationRequestCode) {
+ cancelAuthenticationHandler.postDelayed({
+ if (!oAuthResultReceived) {
+ Timber.tag("AuthenticatePCloudActivity").i("Authentication canceled or no redirect received after resuming Cryptomator since 1.5s")
+ Toast.makeText(context(), R.string.error_authentication_failed, Toast.LENGTH_SHORT).show()
+ finish()
+ }
+ }, redirectTimeoutAfterAuthenticationAndResumed)
+ }
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
intent.data?.let {
- if(it.host == "redirect" && it.scheme == "pcloudoauth") {
+ if (it.host == "redirect" && it.scheme == "pcloudoauth") {
+ oAuthResultReceived = true
val parameters = parseUrlFragmentParameters(it)
val accessToken = parameters["access_token"]
val hostname = parameters["hostname"]
@@ -41,10 +57,11 @@ class AuthenticatePCloudActivity : BaseActivity() {
result.putExtra(CloudConnectionListPresenter.PCLOUD_OAUTH_AUTH_CODE, accessToken)
result.putExtra(CloudConnectionListPresenter.PCLOUD_HOSTNAME, hostname)
setResult(android.app.Activity.RESULT_OK, result)
- finish()
} else {
Toast.makeText(this, R.string.error_authentication_failed, Toast.LENGTH_LONG).show()
+ Timber.tag("AuthenticatePCloudActivity").i("Authentication failed as the access token or hostname is null")
}
+ finish()
} else {
Timber.tag("AuthenticatePCloudActivity").e("Tried to call activity using a different redirect scheme")
}
@@ -63,4 +80,9 @@ class AuthenticatePCloudActivity : BaseActivity() {
}
return emptyMap()
}
+
+ override fun onDestroy() {
+ super.onDestroy()
+ cancelAuthenticationHandler.removeCallbacksAndMessages(null)
+ }
}