From 18193ece2715cf7ac60411ce65a09b34b246753b Mon Sep 17 00:00:00 2001 From: Stefan Niedermann Date: Mon, 22 Jan 2024 08:17:24 +0100 Subject: fix(attachments): Limit opening attachments in Files app to proper Files app version Signed-off-by: Stefan Niedermann --- .../nextcloud/deck/util/AttachmentUtil.java | 26 ++++++++++++++-------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/AttachmentUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/AttachmentUtil.java index a9c25dcf7..db83a17f0 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/util/AttachmentUtil.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/AttachmentUtil.java @@ -12,6 +12,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.Px; +import com.nextcloud.android.sso.helper.VersionCheckHelper; import com.nextcloud.android.sso.model.FilesAppType; import java.util.Optional; @@ -72,7 +73,7 @@ public class AttachmentUtil { return; } - final var intent = generateNextcloudFilesIntent(context.getPackageManager(), account, attachment) + final var intent = generateNextcloudFilesIntent(context, account, attachment) .orElse(generateBrowserIntent(account, cardRemoteId, attachment)); try { @@ -83,15 +84,22 @@ public class AttachmentUtil { } } - private static Optional generateNextcloudFilesIntent(@NonNull PackageManager packageManager, @NonNull Account account, Attachment attachment) { - for (final var type : FilesAppType.values()) { - final var intent = new Intent(Intent.ACTION_VIEW) - .setClassName(type.packageId, "com.owncloud.android.ui.activity.FileDisplayActivity") - .putExtra("KEY_FILE_ID", String.valueOf(attachment.getFileId())) - .putExtra("KEY_ACCOUNT", account.getName()); + private static Optional generateNextcloudFilesIntent(@NonNull Context context, @NonNull Account account, Attachment attachment) { + final var packageManager = context.getPackageManager(); - if (packageManager.resolveActivity(intent, 0) != null) { - return Optional.of(intent); + for (final var type : FilesAppType.values()) { + try { + if (VersionCheckHelper.getNextcloudFilesVersionCode(context, type) > 30110000) { + final var intent = new Intent(Intent.ACTION_VIEW) + .setClassName(type.packageId, "com.owncloud.android.ui.activity.FileDisplayActivity") + .putExtra("KEY_FILE_ID", String.valueOf(attachment.getFileId())) + .putExtra("KEY_ACCOUNT", account.getName()); + + if (packageManager.resolveActivity(intent, 0) != null) { + return Optional.of(intent); + } + } + } catch (PackageManager.NameNotFoundException ignored) { } } -- cgit v1.2.3