diff --git a/android/app/build.gradle b/android/app/build.gradle
index 3bca0993a84..54991ba2fac 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -82,12 +82,12 @@ android {
}
dependencies {
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.3'
+ coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.4'
implementation project(':isotools')
implementation project(':sdl2')
- implementation group: 'commons-io', name: 'commons-io', version: '2.17.0'
+ implementation group: 'commons-io', name: 'commons-io', version: '2.18.0'
implementation 'com.google.android.material:material:1.12.0'
}
diff --git a/android/app/src/main/java/org/fheroes2/MapFileManagerActivity.java b/android/app/src/main/java/org/fheroes2/MapFileManagerActivity.java
index f015b2453b6..a9aa4018c08 100644
--- a/android/app/src/main/java/org/fheroes2/MapFileManagerActivity.java
+++ b/android/app/src/main/java/org/fheroes2/MapFileManagerActivity.java
@@ -332,7 +332,19 @@ public void unselectAllButtonClicked( final View view )
@SuppressWarnings( "java:S1172" ) // SonarQube warning "Remove unused method parameter"
public void importButtonClicked( final View view )
{
- zipFileChooserLauncher.launch( "application/zip" );
+ try {
+ zipFileChooserLauncher.launch( "application/zip" );
+ }
+ catch ( final Exception ex ) {
+ Log.e( "fheroes2", "Failed to import map files.", ex );
+
+ ( new AlertDialog.Builder( this ) )
+ .setTitle( R.string.activity_map_file_manager_import_error_title )
+ .setMessage( R.string.activity_map_file_manager_import_error_message )
+ .setPositiveButton( R.string.activity_map_file_manager_import_error_positive_btn_text, ( dialog, which ) -> {} )
+ .create()
+ .show();
+ }
}
@SuppressWarnings( "java:S1172" ) // SonarQube warning "Remove unused method parameter"
@@ -349,7 +361,19 @@ public void exportButtonClicked( final View view )
return;
}
- zipFileLocationChooserLauncher.launch( getString( R.string.activity_map_file_manager_suggested_zip_file_name ) );
+ try {
+ zipFileLocationChooserLauncher.launch( getString( R.string.activity_map_file_manager_suggested_zip_file_name ) );
+ }
+ catch ( final Exception ex ) {
+ Log.e( "fheroes2", "Failed to export map files.", ex );
+
+ ( new AlertDialog.Builder( this ) )
+ .setTitle( R.string.activity_map_file_manager_export_error_title )
+ .setMessage( R.string.activity_map_file_manager_export_error_message )
+ .setPositiveButton( R.string.activity_map_file_manager_export_error_positive_btn_text, ( dialog, which ) -> {} )
+ .create()
+ .show();
+ }
}
@SuppressWarnings( "java:S1172" ) // SonarQube warning "Remove unused method parameter"
diff --git a/android/app/src/main/java/org/fheroes2/SaveFileManagerActivity.java b/android/app/src/main/java/org/fheroes2/SaveFileManagerActivity.java
index 40e5cb5a1bf..b3ae174c419 100644
--- a/android/app/src/main/java/org/fheroes2/SaveFileManagerActivity.java
+++ b/android/app/src/main/java/org/fheroes2/SaveFileManagerActivity.java
@@ -358,7 +358,19 @@ public void unselectAllButtonClicked( final View view )
@SuppressWarnings( "java:S1172" ) // SonarQube warning "Remove unused method parameter"
public void importButtonClicked( final View view )
{
- zipFileChooserLauncher.launch( "application/zip" );
+ try {
+ zipFileChooserLauncher.launch( "application/zip" );
+ }
+ catch ( final Exception ex ) {
+ Log.e( "fheroes2", "Failed to import save files.", ex );
+
+ ( new AlertDialog.Builder( this ) )
+ .setTitle( R.string.activity_save_file_manager_import_error_title )
+ .setMessage( R.string.activity_save_file_manager_import_error_message )
+ .setPositiveButton( R.string.activity_save_file_manager_import_error_positive_btn_text, ( dialog, which ) -> {} )
+ .create()
+ .show();
+ }
}
@SuppressWarnings( "java:S1172" ) // SonarQube warning "Remove unused method parameter"
@@ -375,7 +387,19 @@ public void exportButtonClicked( final View view )
return;
}
- zipFileLocationChooserLauncher.launch( getString( R.string.activity_save_file_manager_suggested_zip_file_name ) );
+ try {
+ zipFileLocationChooserLauncher.launch( getString( R.string.activity_save_file_manager_suggested_zip_file_name ) );
+ }
+ catch ( final Exception ex ) {
+ Log.e( "fheroes2", "Failed to export save files.", ex );
+
+ ( new AlertDialog.Builder( this ) )
+ .setTitle( R.string.activity_save_file_manager_export_error_title )
+ .setMessage( R.string.activity_save_file_manager_export_error_message )
+ .setPositiveButton( R.string.activity_save_file_manager_export_error_positive_btn_text, ( dialog, which ) -> {} )
+ .create()
+ .show();
+ }
}
@SuppressWarnings( "java:S1172" ) // SonarQube warning "Remove unused method parameter"
diff --git a/android/app/src/main/java/org/fheroes2/ToolsetActivity.java b/android/app/src/main/java/org/fheroes2/ToolsetActivity.java
index e5ce4949079..a82c2fc0b11 100644
--- a/android/app/src/main/java/org/fheroes2/ToolsetActivity.java
+++ b/android/app/src/main/java/org/fheroes2/ToolsetActivity.java
@@ -168,7 +168,19 @@ public void startGameButtonClicked( final View view )
@SuppressWarnings( "java:S1172" ) // SonarQube warning "Remove unused method parameter"
public void extractHoMM2AssetsButtonClicked( final View view )
{
- zipFileChooserLauncher.launch( "application/zip" );
+ try {
+ zipFileChooserLauncher.launch( "application/zip" );
+ }
+ catch ( final Exception ex ) {
+ Log.e( "fheroes2", "Failed to extract HoMM2 assets.", ex );
+
+ ( new AlertDialog.Builder( this ) )
+ .setTitle( R.string.activity_toolset_extract_homm2_assets_error_title )
+ .setMessage( R.string.activity_toolset_extract_homm2_assets_error_message )
+ .setPositiveButton( R.string.activity_toolset_extract_homm2_assets_error_positive_btn_text, ( dialog, which ) -> {} )
+ .create()
+ .show();
+ }
}
@SuppressWarnings( "java:S1172" ) // SonarQube warning "Remove unused method parameter"
diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml
index 950421bcbd9..da340fc812b 100644
--- a/android/app/src/main/res/values-ru/strings.xml
+++ b/android/app/src/main/res/values-ru/strings.xml
@@ -13,6 +13,9 @@
Операция успешно завершена.
Операция успешно завершена, но никаких ресурсов HoMM2 найдено не было.
Во время операции произошла ошибка: %s
+ Ошибка извлечения
+ При попытке извлечь ресурсы HoMM2 произошла ошибка.
+ OK
Ошибка скачивания
При попытке скачать демо-версию HoMM2 произошла ошибка. Возможной причиной является отсутствие приложения, которое может загружать файлы из Интернета. Пожалуйста, попробуйте установить такое приложение и повторите попытку.
OK
@@ -28,9 +31,15 @@
Удалить выбранные файлы сохранений
Операция успешно завершена, но никаких файлов сохранений найдено не было.
Во время операции произошла ошибка: %s
+ Ошибка импорта
+ При попытке импортировать файлы сохранений произошла ошибка.
+ OK
Файлы для экспорта не выбраны
Пожалуйста, выберите файлы сохранений для экспорта.
OK
+ Ошибка экспорта
+ При попытке экспортировать файлы сохранений произошла ошибка.
+ OK
Файлы для удаления не выбраны
Пожалуйста, выберите файлы сохранений для удаления.
OK
@@ -53,9 +62,15 @@
Удалить выбранные файлы карт
Операция успешно завершена, но никаких файлов карт найдено не было.
Во время операции произошла ошибка: %s
+ Ошибка импорта
+ При попытке импортировать файлы карт произошла ошибка.
+ OK
Файлы для экспорта не выбраны
Пожалуйста, выберите файлы карт для экспорта.
OK
+ Ошибка экспорта
+ При попытке экспортировать файлы карт произошла ошибка.
+ OK
Файлы для удаления не выбраны
Пожалуйста, выберите файлы карт для удаления.
OK
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 7e2fc680836..dd281443439 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -13,6 +13,9 @@
Operation completed successfully.
Operation completed successfully, but no HoMM2 assets were found.
An error occurred during the operation: %s
+ Extraction error
+ An error occurred while trying to extract HoMM2 assets.
+ OK
Download error
An error occurred while trying to download the HoMM2 demo. A possible reason is the lack of an installed application that can download files from the Internet. Please try to install such an application and try again.
OK
@@ -29,9 +32,15 @@
Delete selected save files
Operation completed successfully, but no save files were found.
An error occurred during the operation: %s
+ Import error
+ An error occurred while trying to import save files.
+ OK
No files selected for export
Please select the save files to export.
OK
+ Export error
+ An error occurred while trying to export save files.
+ OK
No files selected for deletion
Please select the save files to delete.
OK
@@ -55,9 +64,15 @@
Delete selected map files
Operation completed successfully, but no map files were found.
An error occurred during the operation: %s
+ Import error
+ An error occurred while trying to import map files.
+ OK
No files selected for export
Please select the map files to export.
OK
+ Export error
+ An error occurred while trying to export map files.
+ OK
No files selected for deletion
Please select the map files to delete.
OK
diff --git a/android/build.gradle b/android/build.gradle
index 1e7514c4f08..202f3349d0e 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,4 +1,4 @@
plugins {
- id 'com.android.application' version '8.7.2' apply false
- id 'com.android.library' version '8.7.2' apply false
+ id 'com.android.application' version '8.7.3' apply false
+ id 'com.android.library' version '8.7.3' apply false
}