diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 19415e87ca..6672de2d6e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -91,6 +91,7 @@ androidx-navigation-runtime = { module = "androidx.navigation:navigation-runtime androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidxNavigation" } androidx-sqlite = { module = "androidx.sqlite:sqlite", version = "2.5.2" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version = "1.2.1" } +androidx-browser = { module = "androidx.browser:browser", version = "1.8.0" } coil-compose = { module = "io.coil-kt:coil-compose", version = "2.6.0" } commons-compress = {module = "org.apache.commons:commons-compress", version = "1.25.0"} context-propagation = { module = "io.micrometer:context-propagation", version = "1.1.0" } diff --git a/sentry-samples/sentry-samples-android/build.gradle.kts b/sentry-samples/sentry-samples-android/build.gradle.kts index 48ac6dda5c..c2ea72485c 100644 --- a/sentry-samples/sentry-samples-android/build.gradle.kts +++ b/sentry-samples/sentry-samples-android/build.gradle.kts @@ -144,6 +144,7 @@ dependencies { implementation(libs.androidx.compose.material3) implementation(libs.androidx.navigation.compose) implementation(libs.androidx.recyclerview) + implementation(libs.androidx.browser) implementation(libs.coil.compose) implementation(libs.kotlinx.coroutines.android) implementation(libs.retrofit) diff --git a/sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml b/sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml index c6360ca911..c4f90bcc7c 100644 --- a/sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml +++ b/sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml @@ -69,8 +69,12 @@ android:exported="false" /> + android:name=".CustomTabsActivity" + android:exported="false" /> + + diff --git a/sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/CustomTabsActivity.java b/sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/CustomTabsActivity.java new file mode 100644 index 0000000000..4f615137ed --- /dev/null +++ b/sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/CustomTabsActivity.java @@ -0,0 +1,35 @@ +package io.sentry.samples.android; + +import android.net.Uri; +import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; +import androidx.browser.customtabs.CustomTabColorSchemeParams; +import androidx.browser.customtabs.CustomTabsIntent; +import androidx.core.content.ContextCompat; + +public class CustomTabsActivity extends AppCompatActivity { + + private static final String DEMO_URL = "https://www.sentry.io/"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); + + CustomTabColorSchemeParams params = + new CustomTabColorSchemeParams.Builder() + .setToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary)) + .build(); + builder.setDefaultColorSchemeParams(params); + + builder.setShowTitle(true); + builder.setShareState(CustomTabsIntent.SHARE_STATE_ON); + builder.setInstantAppsEnabled(true); + + CustomTabsIntent customTabsIntent = builder.build(); + customTabsIntent.launchUrl(this, Uri.parse(DEMO_URL)); + + finish(); + } +} diff --git a/sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/MainActivity.java b/sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/MainActivity.java index 62280ecd76..0987dafe3f 100644 --- a/sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/MainActivity.java +++ b/sentry-samples/sentry-samples-android/src/main/java/io/sentry/samples/android/MainActivity.java @@ -272,6 +272,11 @@ public void run() { startActivity(new Intent(this, ProfilingActivity.class)); }); + binding.openCustomTabsActivity.setOnClickListener( + view -> { + startActivity(new Intent(this, CustomTabsActivity.class)); + }); + binding.openFrameDataForSpans.setOnClickListener( view -> startActivity(new Intent(this, FrameDataForSpansActivity.class))); diff --git a/sentry-samples/sentry-samples-android/src/main/res/layout/activity_main.xml b/sentry-samples/sentry-samples-android/src/main/res/layout/activity_main.xml index bccb56ca83..674b65199a 100644 --- a/sentry-samples/sentry-samples-android/src/main/res/layout/activity_main.xml +++ b/sentry-samples/sentry-samples-android/src/main/res/layout/activity_main.xml @@ -146,6 +146,13 @@ android:layout_height="wrap_content" android:text="@string/open_profiling_activity"/> +