From 7ad36684aed34098665400b35c68ec708b6990c3 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sun, 6 Feb 2022 18:51:24 +0100 Subject: [PATCH] Open Nextcloud files in Nextcloud app if installed --- .../launcher2/search/data/NextcloudFile.kt | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/files/src/main/java/de/mm20/launcher2/search/data/NextcloudFile.kt b/files/src/main/java/de/mm20/launcher2/search/data/NextcloudFile.kt index 792e286b..a1022ced 100644 --- a/files/src/main/java/de/mm20/launcher2/search/data/NextcloudFile.kt +++ b/files/src/main/java/de/mm20/launcher2/search/data/NextcloudFile.kt @@ -2,20 +2,18 @@ package de.mm20.launcher2.search.data import android.content.Context import android.content.Intent +import android.content.pm.PackageManager import android.net.Uri -import de.mm20.launcher2.files.R -import de.mm20.launcher2.helper.NetworkUtils -import de.mm20.launcher2.nextcloud.NextcloudApiHelper class NextcloudFile( - fileId: Long, - override val label: String, - path: String, - mimeType: String, - size: Long, - isDirectory: Boolean, - val server: String, - metaData: List> + fileId: Long, + override val label: String, + path: String, + mimeType: String, + size: Long, + isDirectory: Boolean, + val server: String, + metaData: List> ) : File(fileId, path, mimeType, size, isDirectory, metaData) { override val badgeKey: String = "nextcloud://" @@ -25,9 +23,26 @@ class NextcloudFile( get() = true override fun getLaunchIntent(context: Context): Intent? { + var nextcloudApp: String? = null return Intent(Intent.ACTION_VIEW).apply { data = Uri.parse("$server/f/$id") flags = Intent.FLAG_ACTIVITY_NEW_TASK + `package` = getNextcloudAppPackage(context) + } + } + + companion object { + private fun getNextcloudAppPackage(context: Context): String? { + val candidates = listOf("com.nextcloud.client", "com.nextcloud.android.beta") + + for (c in candidates) { + try { + context.packageManager.getPackageInfo(c, 0) + return c + } catch (e: PackageManager.NameNotFoundException) { + } + } + return null } } } \ No newline at end of file