diff --git a/assets/translations/bs.json b/assets/translations/bs.json index 131db9a..fa1fcba 100644 --- a/assets/translations/bs.json +++ b/assets/translations/bs.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku is not running", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Želite li ukloniti aplikaciju?", diff --git a/assets/translations/cs.json b/assets/translations/cs.json index e1ea6e2..18b0a67 100644 --- a/assets/translations/cs.json +++ b/assets/translations/cs.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Správce", "shizukuBinderNotFound": "Shizuku neběží", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Odstranit Apku?", diff --git a/assets/translations/de.json b/assets/translations/de.json index 7b87707..3c924b4 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku läuft nicht", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "App entfernen?", diff --git a/assets/translations/en.json b/assets/translations/en.json index 5e04c93..7f2daf1 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -289,6 +289,7 @@ "shizukuBinderNotFound": "Сompatible Shizuku service wasn't found", "useSystemFont": "Use the system font", "systemFontError": "Error loading the system font: {}", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Remove App?", diff --git a/assets/translations/es.json b/assets/translations/es.json index c7b579c..abe6417 100644 --- a/assets/translations/es.json +++ b/assets/translations/es.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku no está operativo", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "¿Eliminar Aplicación?", diff --git a/assets/translations/fa.json b/assets/translations/fa.json index 1dd914f..feea14f 100644 --- a/assets/translations/fa.json +++ b/assets/translations/fa.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku is not running", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "برنامه حذف شود؟", diff --git a/assets/translations/fr.json b/assets/translations/fr.json index d0e69c8..0a64673 100644 --- a/assets/translations/fr.json +++ b/assets/translations/fr.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku is not running", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Supprimer l'application ?", diff --git a/assets/translations/hu.json b/assets/translations/hu.json index 4284c75..df48201 100644 --- a/assets/translations/hu.json +++ b/assets/translations/hu.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku is not running", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Eltávolítja az alkalmazást?", diff --git a/assets/translations/it.json b/assets/translations/it.json index deebe35..91dff86 100644 --- a/assets/translations/it.json +++ b/assets/translations/it.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku non è in esecuzione", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Rimuovere l'app?", diff --git a/assets/translations/ja.json b/assets/translations/ja.json index 7c0b45e..72cc0e5 100644 --- a/assets/translations/ja.json +++ b/assets/translations/ja.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizukuが起動していません", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "アプリを削除しますか?", diff --git a/assets/translations/nl.json b/assets/translations/nl.json index 08dd069..88ae1b4 100644 --- a/assets/translations/nl.json +++ b/assets/translations/nl.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku is not running", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "App verwijderen?", diff --git a/assets/translations/pl.json b/assets/translations/pl.json index 86f9f62..c602475 100644 --- a/assets/translations/pl.json +++ b/assets/translations/pl.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku is not running", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Usunąć aplikację?", diff --git a/assets/translations/pt.json b/assets/translations/pt.json index 2d697cb..2fe1cb2 100644 --- a/assets/translations/pt.json +++ b/assets/translations/pt.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku não está rodando", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Remover aplicativo?", diff --git a/assets/translations/ru.json b/assets/translations/ru.json index f3b6a61..ab25718 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -289,6 +289,7 @@ "shizukuBinderNotFound": "Совместимый сервис Shizuku не найден", "useSystemFont": "Использовать системный шрифт", "systemFontError": "Ошибка загрузки системного шрифта: {}", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Удалить приложение?", diff --git a/assets/translations/sv.json b/assets/translations/sv.json index 2d914ef..6886fdc 100644 --- a/assets/translations/sv.json +++ b/assets/translations/sv.json @@ -273,6 +273,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku is not running", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Ta Bort App?", diff --git a/assets/translations/tr.json b/assets/translations/tr.json index b56ae94..35f8c16 100644 --- a/assets/translations/tr.json +++ b/assets/translations/tr.json @@ -287,6 +287,7 @@ "shizuku": "Shizuku", "root": "Root", "shizukuBinderNotFound": "Shizuku is not running", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "Uygulamayı Kaldır?", diff --git a/assets/translations/zh.json b/assets/translations/zh.json index 7cbb40a..094c032 100644 --- a/assets/translations/zh.json +++ b/assets/translations/zh.json @@ -289,6 +289,7 @@ "shizukuBinderNotFound": "未发现兼容的 Shizuku 服务", "useSystemFont": "使用系统字体", "systemFontError": "加载系统字体出错:{}", + "useVersionCodeAsOSVersion": "Use app versionCode as OS-detected version", "requestHeader": "Request header", "removeAppQuestion": { "one": "是否删除应用?", diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 5ceb747..071947d 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -798,13 +798,17 @@ class AppsProvider with ChangeNotifier { SourceProvider() .getSource(app.app.url, overrideSource: app.app.overrideSource) .naiveStandardVersionDetection; + String? realInstalledVersion = + app.app.additionalSettings['useVersionCodeAsOSVersion'] == true + ? app.installedInfo?.versionCode.toString() + : app.installedInfo?.versionName; return app.app.additionalSettings['trackOnly'] != true && app.app.additionalSettings['versionDetection'] != 'releaseDateAsVersion' && - app.installedInfo?.versionName != null && + realInstalledVersion != null && app.app.installedVersion != null && - (reconcileVersionDifferences(app.installedInfo!.versionName!, - app.app.installedVersion!) != + (reconcileVersionDifferences( + realInstalledVersion, app.app.installedVersion!) != null || naiveStandardVersionDetection); } @@ -823,30 +827,33 @@ class AppsProvider with ChangeNotifier { SourceProvider() .getSource(app.url, overrideSource: app.overrideSource) .naiveStandardVersionDetection; + String? realInstalledVersion = + app.additionalSettings['useVersionCodeAsOSVersion'] == true + ? installedInfo?.versionCode.toString() + : installedInfo?.versionName; // FIRST, COMPARE THE APP'S REPORTED AND REAL INSTALLED VERSIONS, WHERE ONE IS NULL if (installedInfo == null && app.installedVersion != null && !trackOnly) { // App says it's installed but isn't really (and isn't track only) - set to not installed app.installedVersion = null; modded = true; - } else if (installedInfo?.versionName != null && - app.installedVersion == null) { - // App says it's not installed but really is - set to installed and use real package versionName - app.installedVersion = installedInfo!.versionName; + } else if (realInstalledVersion != null && app.installedVersion == null) { + // App says it's not installed but really is - set to installed and use real package versionName (or versionCode if chosen) + app.installedVersion = realInstalledVersion; modded = true; } // SECOND, RECONCILE DIFFERENCES BETWEEN THE APP'S REPORTED AND REAL INSTALLED VERSIONS, WHERE NEITHER IS NULL - if (installedInfo?.versionName != null && - installedInfo!.versionName != app.installedVersion && + if (realInstalledVersion != null && + realInstalledVersion != app.installedVersion && versionDetectionIsStandard) { // App's reported version and real version don't match (and it uses standard version detection) // If they share a standard format (and are still different under it), update the reported version accordingly var correctedInstalledVersion = reconcileVersionDifferences( - installedInfo.versionName!, app.installedVersion!); + realInstalledVersion, app.installedVersion!); if (correctedInstalledVersion?.key == false) { app.installedVersion = correctedInstalledVersion!.value; modded = true; } else if (naiveStandardVersionDetection) { - app.installedVersion = installedInfo.versionName; + app.installedVersion = realInstalledVersion; modded = true; } } @@ -1291,8 +1298,11 @@ class AppsProvider with ChangeNotifier { await Future.delayed(const Duration(microseconds: 1)); } for (App a in importedApps) { + var installedInfo = await getInstalledInfo(a.id, printErr: false); a.installedVersion = - (await getInstalledInfo(a.id, printErr: false))?.versionName; + a.additionalSettings['useVersionCodeAsOSVersion'] == true + ? installedInfo?.versionCode.toString() + : installedInfo?.versionName; } await saveApps(importedApps, onlyIfExists: false); notifyListeners(); diff --git a/lib/providers/source_provider.dart b/lib/providers/source_provider.dart index 3ae22f2..57ea4dd 100644 --- a/lib/providers/source_provider.dart +++ b/lib/providers/source_provider.dart @@ -485,6 +485,10 @@ abstract class AppSource { label: tr('versionDetection'), defaultValue: 'standardVersionDetection') ], + [ + GeneratedFormSwitch('useVersionCodeAsOSVersion', + label: tr('useVersionCodeAsOSVersion'), defaultValue: false) + ], [ GeneratedFormTextField('apkFilterRegEx', label: tr('filterAPKsByRegEx'),