diff --git a/CHANGELOG.md b/CHANGELOG.md index 74996aca9f..3e78ca6494 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## TBD +* Use packageInfo.longVersionCode to collect versionCode on API 28+ +[#471](https://github.com/bugsnag/bugsnag-android/pull/471) + ### Bug fixes * [NDK] Fix possible null pointer dereference diff --git a/sdk/src/main/java/com/bugsnag/android/AppData.java b/sdk/src/main/java/com/bugsnag/android/AppData.java index bbccc8ada8..8efd77575c 100644 --- a/sdk/src/main/java/com/bugsnag/android/AppData.java +++ b/sdk/src/main/java/com/bugsnag/android/AppData.java @@ -5,6 +5,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.os.Build; import android.os.SystemClock; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -137,7 +138,14 @@ private String calculateNotifierType(Configuration config) { @SuppressWarnings("deprecation") private Integer calculateVersionCode() { if (packageInfo != null) { - return packageInfo.versionCode; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + // Android P added an android:versionCodeMajor field for anyone who ran out of + // space in android:versionCode. As it's stored in the upper 32 bits + // we want to ignore those, and retrieve the versionCode value only. + return (int) (packageInfo.getLongVersionCode() & 0x0000FFFFL); + } else { + return packageInfo.versionCode; + } } else { return null; }