From 55c3ebd0851aeea5495a714daa958bd044286735 Mon Sep 17 00:00:00 2001 From: Caren Date: Tue, 29 Nov 2022 12:52:34 -0800 Subject: [PATCH] Use Chrome Custom tab for opening articles Change-Id: I0024038f918a18d3c3e803587a7e1c159bfb9169 --- core/ui/build.gradle.kts | 1 + .../apps/nowinandroid/core/ui/NewsFeed.kt | 21 +++++++++++++++---- gradle/libs.versions.toml | 2 ++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index 794b1573b..c76e4bb27 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -28,6 +28,7 @@ dependencies { implementation(project(":core:model")) implementation(project(":core:domain")) + implementation(libs.androidx.browser) implementation(libs.androidx.core.ktx) implementation(libs.coil.kt) implementation(libs.coil.kt.compose) diff --git a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt index 32308bd63..e72b6286e 100644 --- a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt +++ b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt @@ -16,22 +16,25 @@ package com.google.samples.apps.nowinandroid.core.ui -import android.content.Intent +import android.content.Context import android.net.Uri +import androidx.browser.customtabs.CustomTabColorSchemeParams +import androidx.browser.customtabs.CustomTabsIntent import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyGridScope import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Devices import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.core.content.ContextCompat import com.google.samples.apps.nowinandroid.core.designsystem.theme.NiaTheme import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource import com.google.samples.apps.nowinandroid.core.model.data.previewNewsResources @@ -51,13 +54,13 @@ fun LazyGridScope.newsFeed( val resourceUrl by remember { mutableStateOf(Uri.parse(saveableNewsResource.newsResource.url)) } - val launchResourceIntent = Intent(Intent.ACTION_VIEW, resourceUrl) val context = LocalContext.current + val backgroundColor = MaterialTheme.colorScheme.background.toArgb() NewsResourceCardExpanded( newsResource = saveableNewsResource.newsResource, isBookmarked = saveableNewsResource.isSaved, - onClick = { ContextCompat.startActivity(context, launchResourceIntent, null) }, + onClick = { launchCustomChromeTab(context, resourceUrl, backgroundColor) }, onToggleBookmark = { onNewsResourcesCheckedChanged( saveableNewsResource.newsResource.id, @@ -70,6 +73,16 @@ fun LazyGridScope.newsFeed( } } +private fun launchCustomChromeTab(context: Context, uri: Uri, toolbarColor: Int) { + val customTabBarColor = CustomTabColorSchemeParams.Builder() + .setToolbarColor(toolbarColor).build() + val customTabsIntent = CustomTabsIntent.Builder() + .setDefaultColorSchemeParams(customTabBarColor) + .build() + + customTabsIntent.launchUrl(context, uri) +} + /** * A sealed hierarchy describing the state of the feed of news resources. */ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5892e277d..6022856fe 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,6 +4,7 @@ androidDesugarJdkLibs = "1.2.0" androidGradlePlugin = "7.3.1" androidxActivity = "1.6.1" androidxAppCompat = "1.5.1" +androidxBrowser = "1.4.0" androidxComposeBom = "2022.11.00" androidxComposeCompiler = "1.3.2" androidxComposeRuntimeTracing = "1.0.0-alpha01" @@ -53,6 +54,7 @@ android-desugarJdkLibs = { group = "com.android.tools", name = "desugar_jdk_libs androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidxActivity" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" } androidx-benchmark-macro = { group = "androidx.benchmark", name = "benchmark-macro-junit4", version.ref = "androidxMacroBenchmark" } +androidx-browser = { group = "androidx.browser", name = "browser", version.ref = "androidxBrowser" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidxComposeBom" } androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" } androidx-compose-foundation-layout = { group = "androidx.compose.foundation", name = "foundation-layout" }