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"/>
+
+