diff --git a/CHANGELOG.md b/CHANGELOG.md
index 676cf4da5c..813e9e65bc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## Unreleased
+
+### Fixes
+
+- Accept manifest integer values when requiring floating values ([#3823](https://github.com/getsentry/sentry-java/pull/3823))
+
## 7.16.0
### Features
diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java
index babcfdfc98..adfd4f22ad 100644
--- a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java
+++ b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java
@@ -492,7 +492,7 @@ private static boolean readBool(
private static @NotNull Double readDouble(
final @NotNull Bundle metadata, final @NotNull ILogger logger, final @NotNull String key) {
// manifest meta-data only reads float
- final Double value = ((Float) metadata.getFloat(key, -1)).doubleValue();
+ final Double value = ((Number) metadata.getFloat(key, metadata.getInt(key, -1))).doubleValue();
logger.log(SentryLevel.DEBUG, key + " read: " + value);
return value;
}
diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt
index 25b2e0191c..17f0f3950b 100644
--- a/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt
+++ b/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt
@@ -1515,4 +1515,29 @@ class ManifestMetadataReaderTest {
assertTrue(fixture.options.experimental.sessionReplay.maskViewClasses.contains(SentryReplayOptions.IMAGE_VIEW_CLASS_NAME))
assertTrue(fixture.options.experimental.sessionReplay.maskViewClasses.contains(SentryReplayOptions.TEXT_VIEW_CLASS_NAME))
}
+
+ @Test
+ fun `applyMetadata reads integers even when expecting floats`() {
+ // Arrange
+ val expectedSampleRate: Int = 1
+
+ val bundle = bundleOf(
+ ManifestMetadataReader.SAMPLE_RATE to expectedSampleRate,
+ ManifestMetadataReader.TRACES_SAMPLE_RATE to expectedSampleRate,
+ ManifestMetadataReader.PROFILES_SAMPLE_RATE to expectedSampleRate,
+ ManifestMetadataReader.REPLAYS_SESSION_SAMPLE_RATE to expectedSampleRate,
+ ManifestMetadataReader.REPLAYS_ERROR_SAMPLE_RATE to expectedSampleRate
+ )
+ val context = fixture.getContext(metaData = bundle)
+
+ // Act
+ ManifestMetadataReader.applyMetadata(context, fixture.options, fixture.buildInfoProvider)
+
+ // Assert
+ assertEquals(expectedSampleRate.toDouble(), fixture.options.sampleRate)
+ assertEquals(expectedSampleRate.toDouble(), fixture.options.tracesSampleRate)
+ assertEquals(expectedSampleRate.toDouble(), fixture.options.profilesSampleRate)
+ assertEquals(expectedSampleRate.toDouble(), fixture.options.experimental.sessionReplay.sessionSampleRate)
+ assertEquals(expectedSampleRate.toDouble(), fixture.options.experimental.sessionReplay.onErrorSampleRate)
+ }
}
diff --git a/sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml b/sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml
index 058ad3710c..2327573a43 100644
--- a/sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml
+++ b/sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml
@@ -114,7 +114,7 @@
-
+
@@ -165,7 +165,7 @@
-
+