From 1ba17015748771d303b6e41aaaa9b61e44b2e3c9 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 25 Sep 2020 15:05:52 +0530 Subject: [PATCH] app: rewrite UrlLauncherImpl to use Chrome Custom Tabs Signed-off-by: Harsh Shandilya --- app/build.gradle | 2 ++ .../java/dev/msfjarvis/lobsters/Application.kt | 8 +++++++- .../lobsters/urllauncher/UrlLauncherImpl.kt | 18 +++++++++++++----- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c13d5553..9013e3e6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,6 +67,7 @@ dependencies { implementation 'androidx.core:core-ktx:1.5.0-alpha03' implementation 'androidx.activity:activity-ktx:1.2.0-alpha08' implementation 'androidx.appcompat:appcompat:1.3.0-alpha02' + implementation "androidx.browser:browser:1.2.0" implementation "androidx.compose.foundation:foundation:$compose_version" implementation "androidx.compose.foundation:foundation-layout:$compose_version" implementation "androidx.compose.foundation:foundation-text:$compose_version" @@ -84,6 +85,7 @@ dependencies { implementation 'com.google.android.material:material:1.3.0-alpha02' implementation "com.google.dagger:hilt-android:$hilt_dagger_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" + implementation "saschpe.android:customtabs:3.0.2" androidTestImplementation "com.google.dagger:hilt-android-testing:$hilt_dagger_version" testImplementation 'junit:junit:4.13' androidTestImplementation "androidx.ui:ui-test:$compose_version" diff --git a/app/src/main/java/dev/msfjarvis/lobsters/Application.kt b/app/src/main/java/dev/msfjarvis/lobsters/Application.kt index f59583cc..7051dd9d 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/Application.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/Application.kt @@ -2,6 +2,12 @@ package dev.msfjarvis.lobsters import android.app.Application import dagger.hilt.android.HiltAndroidApp +import saschpe.android.customtabs.CustomTabsActivityLifecycleCallbacks @HiltAndroidApp -class Application : Application() +class Application : Application() { + override fun onCreate() { + super.onCreate() + registerActivityLifecycleCallbacks(CustomTabsActivityLifecycleCallbacks()) + } +} diff --git a/app/src/main/java/dev/msfjarvis/lobsters/urllauncher/UrlLauncherImpl.kt b/app/src/main/java/dev/msfjarvis/lobsters/urllauncher/UrlLauncherImpl.kt index b37e29cd..d331b805 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/urllauncher/UrlLauncherImpl.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/urllauncher/UrlLauncherImpl.kt @@ -1,14 +1,22 @@ package dev.msfjarvis.lobsters.urllauncher import android.content.Context -import android.content.Intent -import android.content.Intent.ACTION_VIEW import android.net.Uri -import android.util.Patterns +import androidx.browser.customtabs.CustomTabsIntent +import saschpe.android.customtabs.CustomTabsHelper +import saschpe.android.customtabs.WebViewFallback class UrlLauncherImpl(private val context: Context) : UrlLauncher { override fun launch(url: String) { - if (!Patterns.WEB_URL.matcher(url).matches()) return - context.startActivity(Intent(ACTION_VIEW).apply { data = Uri.parse(url) }) + val customTabsIntent = CustomTabsIntent.Builder() + .addDefaultShareMenuItem() + .setShowTitle(true) + .build() + CustomTabsHelper.addKeepAliveExtra(context, customTabsIntent.intent) + CustomTabsHelper.openCustomTab( + context, customTabsIntent, + Uri.parse(url), + WebViewFallback() + ) } }