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 }