package de.waypointaudio.util import android.content.Context import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.os.Build /** * Liefert die aktuelle App-Version zur Laufzeit aus dem PackageManager. * Damit muss die Anzeige bei Versions-Updates nicht mehr manuell gepflegt werden. */ data class AppVersionInfo( val versionName: String, val versionCode: Long ) { /** Anzeige-Format, z. B. "1.5.2-version-dialog (17)". */ val display: String get() = "$versionName ($versionCode)" } object AppVersion { fun get(context: Context): AppVersionInfo { val pm = context.packageManager val pkg = context.packageName val info: PackageInfo = try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { pm.getPackageInfo(pkg, PackageManager.PackageInfoFlags.of(0)) } else { @Suppress("DEPRECATION") pm.getPackageInfo(pkg, 0) } } catch (_: PackageManager.NameNotFoundException) { return AppVersionInfo(versionName = "?", versionCode = 0L) } val name = info.versionName ?: "?" val code = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { info.longVersionCode } else { @Suppress("DEPRECATION") info.versionCode.toLong() } return AppVersionInfo(versionName = name, versionCode = code) } }