From 884265790980c38cab06bc143731353b7727276b Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Tue, 30 Sep 2025 11:12:33 +0200 Subject: [PATCH] feat(android-distribution): Add update check button to Android sample MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add sentry-android-distribution as debug-only dependency - Add "Check for Update" button to main activity UI - Implement handler that calls Sentry.distribution().checkForUpdate() - Handle all UpdateStatus types: NewRelease, UpToDate, NoNetwork, UpdateError - Display results in toast messages Note: This feature requires proper distribution tokens and configuration to work. This change makes it easier to test the distribution integration. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../sentry-samples-android/build.gradle.kts | 1 + .../sentry/samples/android/MainActivity.java | 36 +++++++++++++++++++ .../src/main/res/layout/activity_main.xml | 6 ++++ .../src/main/res/values/strings.xml | 1 + 4 files changed, 44 insertions(+) diff --git a/sentry-samples/sentry-samples-android/build.gradle.kts b/sentry-samples/sentry-samples-android/build.gradle.kts index 56f270d235b..acec6ac809c 100644 --- a/sentry-samples/sentry-samples-android/build.gradle.kts +++ b/sentry-samples/sentry-samples-android/build.gradle.kts @@ -150,6 +150,7 @@ dependencies { implementation(libs.sentry.native.ndk) implementation(libs.timber) + debugImplementation(projects.sentryAndroidDistribution) debugImplementation(libs.leakcanary) } 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 1b9acc3c267..824bef1ebab 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 @@ -5,12 +5,14 @@ import android.content.res.Configuration; import android.os.Bundle; import android.os.Handler; +import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import io.sentry.Attachment; import io.sentry.ISpan; import io.sentry.MeasurementUnit; import io.sentry.Sentry; +import io.sentry.UpdateStatus; import io.sentry.instrumentation.file.SentryFileOutputStream; import io.sentry.protocol.Feedback; import io.sentry.protocol.User; @@ -304,6 +306,40 @@ public void run() { Sentry.replay().enableDebugMaskingOverlay(); }); + binding.checkForUpdate.setOnClickListener( + view -> { + Toast.makeText(this, "Checking for updates...", Toast.LENGTH_SHORT).show(); + Sentry.distribution() + .checkForUpdate( + result -> { + runOnUiThread( + () -> { + String message; + if (result instanceof UpdateStatus.NewRelease) { + UpdateStatus.NewRelease newRelease = (UpdateStatus.NewRelease) result; + message = + "Update available: " + + newRelease.getInfo().getBuildVersion() + + " (Build " + + newRelease.getInfo().getBuildNumber() + + ")\nDownload URL: " + + newRelease.getInfo().getDownloadUrl(); + } else if (result instanceof UpdateStatus.UpToDate) { + message = "App is up to date!"; + } else if (result instanceof UpdateStatus.NoNetwork) { + UpdateStatus.NoNetwork noNetwork = (UpdateStatus.NoNetwork) result; + message = "No network connection: " + noNetwork.getMessage(); + } else if (result instanceof UpdateStatus.UpdateError) { + UpdateStatus.UpdateError error = (UpdateStatus.UpdateError) result; + message = "Error checking for updates: " + error.getMessage(); + } else { + message = "Unknown status"; + } + Toast.makeText(this, message, Toast.LENGTH_LONG).show(); + }); + }); + }); + setContentView(binding.getRoot()); } 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 d2eda41a387..0083fae8f93 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 @@ -170,6 +170,12 @@ android:layout_height="wrap_content" android:text="@string/enable_replay_debug_mode"/> +