diff --git a/src/Kp2aBusinessLogic/Io/PCloudFileStorage.cs b/src/Kp2aBusinessLogic/Io/PCloudFileStorage.cs
index 9f7449ef..efae6706 100644
--- a/src/Kp2aBusinessLogic/Io/PCloudFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/PCloudFileStorage.cs
@@ -3,14 +3,15 @@ using Android.Content;
namespace keepass2android.Io
{
- public partial class PCloudFileStorage: JavaFileStorage
+ public class PCloudFileStorage: JavaFileStorage
{
private const string ClientId = "CkRWTQXY6Lm";
public PCloudFileStorage(Context ctx, IKp2aApp app) :
- base(new Keepass2android.Javafilestorage.PCloudFileStorage(ctx, ClientId), app)
+ base(new Keepass2android.Javafilestorage.PCloudFileStorage(ctx, ClientId, "pcloud", ""), app)
{
- }
+
+ }
public override bool UserShouldBackup
@@ -18,6 +19,23 @@ namespace keepass2android.Io
get { return false; }
}
}
+ public class PCloudFileStorageAll : JavaFileStorage
+ {
+ private const string ClientId = "FLm22de7bdS";
+
+ public PCloudFileStorageAll(Context ctx, IKp2aApp app) :
+ base(new Keepass2android.Javafilestorage.PCloudFileStorage(ctx, ClientId, "pcloudall", "PCLOUDALL_"), app)
+ {
+
+
+ }
+
+
+ public override bool UserShouldBackup
+ {
+ get { return false; }
+ }
+ }
}
#endif
\ No newline at end of file
diff --git a/src/PCloudBindings/Jars/pcloud-sdk-android-1.2.0.aar b/src/PCloudBindings/Jars/pcloud-sdk-android-1.2.0.aar
deleted file mode 100644
index bbb8a7c2..00000000
Binary files a/src/PCloudBindings/Jars/pcloud-sdk-android-1.2.0.aar and /dev/null differ
diff --git a/src/PCloudBindings/Jars/pcloud-sdk-android-1.8.1.aar b/src/PCloudBindings/Jars/pcloud-sdk-android-1.8.1.aar
new file mode 100644
index 00000000..6635eded
Binary files /dev/null and b/src/PCloudBindings/Jars/pcloud-sdk-android-1.8.1.aar differ
diff --git a/src/PCloudBindings/Jars/pcloud-sdk-java-core-1.2.0.jar b/src/PCloudBindings/Jars/pcloud-sdk-java-core-1.2.0.jar
deleted file mode 100644
index d88499c1..00000000
Binary files a/src/PCloudBindings/Jars/pcloud-sdk-java-core-1.2.0.jar and /dev/null differ
diff --git a/src/PCloudBindings/Jars/pcloud-sdk-java-core-1.8.1.jar b/src/PCloudBindings/Jars/pcloud-sdk-java-core-1.8.1.jar
new file mode 100644
index 00000000..4d6ae1f7
Binary files /dev/null and b/src/PCloudBindings/Jars/pcloud-sdk-java-core-1.8.1.jar differ
diff --git a/src/PCloudBindings/PCloudBindings.csproj b/src/PCloudBindings/PCloudBindings.csproj
index d3518054..695135f1 100644
--- a/src/PCloudBindings/PCloudBindings.csproj
+++ b/src/PCloudBindings/PCloudBindings.csproj
@@ -56,7 +56,7 @@
-
+
@@ -72,6 +72,6 @@
-->
-
+
diff --git a/src/java/JavaFileStorage/app/build.gradle b/src/java/JavaFileStorage/app/build.gradle
index 213dff5b..fc7ac8a0 100644
--- a/src/java/JavaFileStorage/app/build.gradle
+++ b/src/java/JavaFileStorage/app/build.gradle
@@ -47,8 +47,8 @@ dependencies {
implementation('com.onedrive.sdk:onedrive-sdk-android:1.2.0') {
transitive = false
}
- implementation 'com.pcloud.sdk:java-core:1.2.0'
- implementation 'com.pcloud.sdk:android:1.2.0'
+ implementation 'com.pcloud.sdk:java-core:1.8.1'
+ implementation 'com.pcloud.sdk:android:1.8.1'
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.microsoft.services.msa:msa-auth:0.8.6'
implementation 'com.microsoft.aad:adal:1.14.0'
diff --git a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/PCloudFileStorage.java b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/PCloudFileStorage.java
index 94180db9..2652a4ef 100644
--- a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/PCloudFileStorage.java
+++ b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/PCloudFileStorage.java
@@ -22,6 +22,7 @@ import com.pcloud.sdk.ApiError;
import com.pcloud.sdk.Authenticators;
import com.pcloud.sdk.AuthorizationActivity;
import com.pcloud.sdk.AuthorizationData;
+import com.pcloud.sdk.AuthorizationRequest;
import com.pcloud.sdk.AuthorizationResult;
import com.pcloud.sdk.Call;
import com.pcloud.sdk.DataSource;
@@ -47,11 +48,19 @@ public class PCloudFileStorage extends JavaFileStorageBase
private ApiClient apiClient;
private String clientId;
+ private String protocolId;
- public PCloudFileStorage(Context ctx, String clientId) {
+ ///prefix for SHARED_PREF keys so we can distinguish between different instances
+ private String sharedPrefPrefix;
+
+ public PCloudFileStorage(Context ctx, String clientId, String protocolId, String sharedPrefPrefix) {
this.ctx = ctx;
this.clientId = clientId;
+ this.protocolId = protocolId;
+ this.sharedPrefPrefix = sharedPrefPrefix;
+
this.apiClient = createApiClientFromSharedPrefs();
+ android.util.Log.d("KP2A", "Init pcloud with protocol " + protocolId + ", prefix=" + sharedPrefPrefix + ", clientId=" + clientId);
}
@Override
@@ -86,7 +95,8 @@ public class PCloudFileStorage extends JavaFileStorageBase
@Override
public String getProtocolId() {
- return "pcloud";
+
+ return protocolId;
}
@Override
@@ -228,11 +238,17 @@ public class PCloudFileStorage extends JavaFileStorageBase
finishActivityWithSuccess(activity);
} else if (!activity.getState().getBoolean("hasStartedAuth", false)) {
Activity castedActivity = (Activity)activity;
- Intent authIntent = AuthorizationActivity.createIntent(castedActivity, this.clientId);
+ AuthorizationRequest req = AuthorizationRequest.create()
+ .setClientId(this.clientId)
+ .setType(AuthorizationRequest.Type.TOKEN)
+ .setForceAccessApproval(true)
+ .build();
+ Intent authIntent = AuthorizationActivity.createIntent(castedActivity, req);
castedActivity.startActivityForResult(authIntent, PCLOUD_AUTHORIZATION_REQUEST_CODE);
activity.getState().putBoolean("hasStartedAuth", true);
}
+
}
@Override
@@ -273,7 +289,7 @@ public class PCloudFileStorage extends JavaFileStorageBase
}
private ApiClient createApiClientFromSharedPrefs() {
- SharedPreferences prefs = this.ctx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
+ SharedPreferences prefs = this.ctx.getSharedPreferences(sharedPrefPrefix + SHARED_PREF_NAME, Context.MODE_PRIVATE);
String authToken = prefs.getString(SHARED_PREF_AUTH_TOKEN, null);
String apiHost = prefs.getString(SHARED_PREF_API_HOST, null);
return this.createApiClient(authToken, apiHost);
diff --git a/src/keepass2android/Resources/drawable-mdpi/ic_storage_pcloudall.png b/src/keepass2android/Resources/drawable-mdpi/ic_storage_pcloudall.png
new file mode 100644
index 00000000..1e4decf4
Binary files /dev/null and b/src/keepass2android/Resources/drawable-mdpi/ic_storage_pcloudall.png differ
diff --git a/src/keepass2android/Resources/drawable-xhdpi/ic_storage_pcloudall.png b/src/keepass2android/Resources/drawable-xhdpi/ic_storage_pcloudall.png
new file mode 100644
index 00000000..26806fce
Binary files /dev/null and b/src/keepass2android/Resources/drawable-xhdpi/ic_storage_pcloudall.png differ
diff --git a/src/keepass2android/Resources/values/strings.xml b/src/keepass2android/Resources/values/strings.xml
index c9bdd409..d3e2cf47 100644
--- a/src/keepass2android/Resources/values/strings.xml
+++ b/src/keepass2android/Resources/values/strings.xml
@@ -637,8 +637,9 @@
Google Drive
Google Drive (KP2A files)
If you do not want to give KP2A access to your full Google Drive, you may select this option. Note that you need to create a database file first, existing files are not visible to the app. Either choose this option from the Create database screen or, if you already opened a database, by exporting the database choosing this option.
- PCloud
+ PCloud (KP2A folder)
This storage type will only request access to the pCloud folder "Applications/Keepass2Android". If you want to use an existing database from your pCloud account, please make sure the file is placed in this pCloud folder.
+ PCloud (Full access)
OneDrive
OneDrive
All files and shared files
diff --git a/src/keepass2android/app/App.cs b/src/keepass2android/app/App.cs
index 38002db2..452c257d 100644
--- a/src/keepass2android/app/App.cs
+++ b/src/keepass2android/app/App.cs
@@ -836,7 +836,8 @@ namespace keepass2android
new NetFtpFileStorage(LocaleManager.LocalizedAppContext, this),
new WebDavFileStorage(this),
new PCloudFileStorage(LocaleManager.LocalizedAppContext, this),
- new MegaFileStorage(App.Context),
+ new PCloudFileStorageAll(LocaleManager.LocalizedAppContext, this),
+ new MegaFileStorage(App.Context),
//new LegacyWebDavStorage(this),
//new LegacyFtpStorage(this),
#endif
diff --git a/src/keepass2android/keepass2android-app.csproj b/src/keepass2android/keepass2android-app.csproj
index 07af894c..dcc1a912 100644
--- a/src/keepass2android/keepass2android-app.csproj
+++ b/src/keepass2android/keepass2android-app.csproj
@@ -1979,6 +1979,12 @@
Designer
+
+
+
+
+
+