From 0a8c96d3218b7cb12f2160867918798f6ec5e7ce Mon Sep 17 00:00:00 2001 From: Justin Bassett Date: Mon, 5 Oct 2020 08:44:36 -0400 Subject: [PATCH] Allow opening of apps via notifications. (#1007) --- .../util/NotificationActionContentHandler.kt | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/homeassistant/companion/android/util/NotificationActionContentHandler.kt b/app/src/main/java/io/homeassistant/companion/android/util/NotificationActionContentHandler.kt index 3d82596bf..c70e7cc01 100644 --- a/app/src/main/java/io/homeassistant/companion/android/util/NotificationActionContentHandler.kt +++ b/app/src/main/java/io/homeassistant/companion/android/util/NotificationActionContentHandler.kt @@ -6,15 +6,23 @@ import android.net.Uri import io.homeassistant.companion.android.webview.WebViewActivity object NotificationActionContentHandler { + private const val APP_PREFIX = "app://" + fun openUri(context: Context, uri: String?, onComplete: () -> Unit = {}) { if (!uri.isNullOrBlank()) { - val intent = if (UrlHandler.isAbsoluteUrl(uri)) { - Intent(Intent.ACTION_VIEW).apply { - data = Uri.parse(uri) + val intent = when { + uri.startsWith(APP_PREFIX) -> { + context.packageManager.getLaunchIntentForPackage(uri.substringAfter(APP_PREFIX)) } - } else { - WebViewActivity.newInstance(context, uri) - } + UrlHandler.isAbsoluteUrl(uri) -> { + Intent(Intent.ACTION_VIEW).apply { + data = Uri.parse(uri) + } + } + else -> { + WebViewActivity.newInstance(context, uri) + } + } ?: WebViewActivity.newInstance(context) intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK context.startActivity(intent)