diff --git a/app/build.gradle b/app/build.gradle
index aa102a6..37d5973 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,8 +8,8 @@ android {
applicationId "com.streamplayer"
minSdk 21
targetSdk 33
- versionCode 94400
- versionName "9.4.4"
+ versionCode 94500
+ versionName "9.4.5"
buildConfigField "String", "DEVICE_REGISTRY_URL", '"http://194.163.191.200:4000"'
}
diff --git a/app/src/main/java/com/streamplayer/MainActivity.java b/app/src/main/java/com/streamplayer/MainActivity.java
index 012dff0..7e1dd5f 100644
--- a/app/src/main/java/com/streamplayer/MainActivity.java
+++ b/app/src/main/java/com/streamplayer/MainActivity.java
@@ -296,8 +296,7 @@ public class MainActivity extends AppCompatActivity {
if (info == null) {
return;
}
- boolean forceUpdate = info.isMandatory(BuildConfig.VERSION_CODE);
- showUpdateDialog(info, forceUpdate);
+ showUpdateDialog(info, true);
}
private void showUpdateDialog(UpdateManager.UpdateInfo info, boolean mandatory) {
@@ -308,20 +307,15 @@ public class MainActivity extends AppCompatActivity {
updateDialog.dismiss();
}
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.ThemeOverlay_StreamPlayer_AlertDialog)
- .setTitle(mandatory ? R.string.update_required_title : R.string.update_available_title)
+ .setTitle(R.string.update_required_title)
.setMessage(buildUpdateMessage(info))
.setPositiveButton(R.string.update_action_download,
(dialog, which) -> updateManager.downloadUpdate(MainActivity.this, info))
- .setNeutralButton(R.string.update_action_view_release,
- (dialog, which) -> openReleasePage(info));
- if (mandatory) {
- builder.setCancelable(false);
- builder.setNegativeButton(R.string.update_action_close_app,
- (dialog, which) -> closeAppCompletely());
- } else {
- builder.setNegativeButton(R.string.update_action_later, null);
- }
+ .setNegativeButton(R.string.update_action_close_app,
+ (dialog, which) -> closeAppCompletely())
+ .setCancelable(false);
updateDialog = builder.show();
+ updateDialog.setCanceledOnTouchOutside(false);
}
private CharSequence buildUpdateMessage(UpdateManager.UpdateInfo info) {
@@ -349,30 +343,9 @@ public class MainActivity extends AppCompatActivity {
builder.append('\n');
builder.append(info.getReleaseNotesPreview());
}
- if (!info.isMandatory(BuildConfig.VERSION_CODE)) {
- builder.append("\n\n");
- builder.append(getString(R.string.update_optional_hint));
- }
return builder.toString();
}
- private void openReleasePage(UpdateManager.UpdateInfo info) {
- String url = info.releasePageUrl;
- if (url == null || url.isEmpty()) {
- url = info.downloadUrl;
- }
- if (url == null || url.isEmpty()) {
- Toast.makeText(this, R.string.update_error_missing_url, Toast.LENGTH_SHORT).show();
- return;
- }
- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
- try {
- startActivity(intent);
- } catch (Exception e) {
- Toast.makeText(this, R.string.update_error_open_release, Toast.LENGTH_SHORT).show();
- }
- }
-
private void showBlockedDialog(String reason, String tokenPart) {
if (isFinishing()) {
return;
diff --git a/app/src/main/res/drawable/bg_events_refresh_button.xml b/app/src/main/res/drawable/bg_events_refresh_button.xml
index 982ff15..c30d557 100644
--- a/app/src/main/res/drawable/bg_events_refresh_button.xml
+++ b/app/src/main/res/drawable/bg_events_refresh_button.xml
@@ -1,10 +1,62 @@
-
-
-
-
-
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 45a88c9..fedbbfd 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -95,6 +95,9 @@
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:background="@drawable/bg_events_refresh_button"
+ android:clickable="true"
+ android:focusable="true"
+ android:focusableInTouchMode="true"
android:textColor="@color/white"
android:text="@string/events_refresh_action"
android:textAllCaps="false"
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 8d4afd4..d9b106c 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -4,5 +4,7 @@
#FFFFFFFF
#B3FFFFFF
#FF1E88E5
+ #FF42A5F5
+ #661E88E5
#FF121212
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ee50432..ca418d1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,16 +10,13 @@
Actualización obligatoria
Actualización disponible
Actualizar
- Ver detalles
Salir
- Más tarde
Versión instalada: %1$s (%2$d)
Última versión publicada: %1$s (%2$d)
Versiones anteriores a %1$d ya no están permitidas.
Tamaño aproximado: %1$s
Descargas registradas: %1$d
Novedades
- Puedes continuar usando la app, pero recomendamos instalar la actualización para obtener el mejor rendimiento.
No se pudo verificar actualizaciones (%1$s)
No se pudo abrir el detalle de la versión
Respuesta vacía del servidor de releases
diff --git a/dashboard/data/devices.json b/dashboard/data/devices.json
index 849d9e5..9db2c32 100644
--- a/dashboard/data/devices.json
+++ b/dashboard/data/devices.json
@@ -6,8 +6,8 @@
"model": "SM-S928B",
"manufacturer": "Samsung",
"osVersion": "16 (API 36)",
- "appVersionName": "9.4.4",
- "appVersionCode": 94400,
+ "appVersionName": "9.4.5",
+ "appVersionCode": 94500,
"firstSeen": "2025-11-23T22:31:13.359Z",
"lastSeen": "2025-11-23T23:11:07.215Z",
"blocked": false,
diff --git a/update-manifest.json b/update-manifest.json
index c52a4d0..5c2c753 100644
--- a/update-manifest.json
+++ b/update-manifest.json
@@ -1,10 +1,10 @@
{
- "versionCode": 94400,
- "versionName": "9.4.4",
+ "versionCode": 94500,
+ "versionName": "9.4.5",
"minSupportedVersionCode": 91000,
- "forceUpdate": false,
- "downloadUrl": "https://gitea.cbcren.online/renato97/app/releases/download/v9.4.4/StreamPlayer-v9.4.4.apk",
- "fileName": "StreamPlayer-v9.4.4.apk",
- "sizeBytes": 5948849,
- "notes": "StreamPlayer v9.4.4\n\nCorrecciones y mejoras:\n\n- Los botones de actualización y cierre en los diálogos ahora se ven correctamente en temas claros y oscuros.\n- Nuevo estilo oscuro en los diálogos para mejorar el contraste del texto y acciones.\n- Botón \"Actualizar ahora\" de eventos con diseño sólido para que destaque en cualquier fondo.\n- Se mantiene la actualización silenciosa y el caché de eventos para que siempre encuentres la grilla fresca al reiniciar.\n\nRecomendamos actualizar para asegurar la mejor experiencia con la sección de eventos y el sistema de actualizaciones."
+ "forceUpdate": true,
+ "downloadUrl": "https://gitea.cbcren.online/renato97/app/releases/download/v9.4.5/StreamPlayer-v9.4.5.apk",
+ "fileName": "StreamPlayer-v9.4.5.apk",
+ "sizeBytes": 5947752,
+ "notes": "StreamPlayer v9.4.5\n\nNovedades:\n\n- El botón \"Actualizar ahora\" de Eventos resalta cuando está enfocado o presionado para que siempre sepas que quedó seleccionado.\n- Las actualizaciones in-app ahora son obligatorias: cuando hay una versión nueva solo verás las opciones Actualizar o Salir.\n- Se eliminó el botón de \"Ver detalles\" para evitar redirecciones; todo sucede dentro de la app.\n- Ajustes visuales adicionales en los diálogos para mantener el contraste óptimo.\n\nActualiza para asegurarte de recibir inmediatamente las últimas correcciones sin pasos adicionales."
}