diff --git a/android/app/build.gradle b/android/app/build.gradle index 3c961d4a1..a26f23c51 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -155,22 +155,22 @@ repositories { dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2' implementation 'androidx.core:core-ktx:1.9.0' - implementation 'androidx.exifinterface:exifinterface:1.3.3' + implementation 'androidx.exifinterface:exifinterface:1.3.4' implementation 'androidx.multidex:multidex:2.0.1' implementation 'com.caverock:androidsvg-aar:1.4' - implementation 'com.commonsware.cwac:document:0.4.1' + implementation 'com.commonsware.cwac:document:0.5.0' implementation 'com.drewnoakes:metadata-extractor:2.18.0' // forked, built by JitPack, cf https://jitpack.io/p/deckerst/Android-TiffBitmapFactory implementation 'com.github.deckerst:Android-TiffBitmapFactory:876e53870a' // forked, built by JitPack, cf https://jitpack.io/p/deckerst/pixymeta-android implementation 'com.github.deckerst:pixymeta-android:706bd73d6e' - implementation 'com.github.bumptech.glide:glide:4.14.1' + implementation 'com.github.bumptech.glide:glide:4.14.2' // huawei flavor only - huaweiImplementation 'com.huawei.agconnect:agconnect-core:1.5.2.300' + huaweiImplementation 'com.huawei.agconnect:agconnect-core:1.7.2.300' kapt 'androidx.annotation:annotation:1.5.0' - kapt 'com.github.bumptech.glide:compiler:4.13.0' + kapt 'com.github.bumptech.glide:compiler:4.14.2' compileOnly rootProject.findProject(':streams_channel') } diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/utils/MimeTypes.kt b/android/app/src/main/kotlin/deckers/thibault/aves/utils/MimeTypes.kt index 55a134192..6f7cf280e 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/utils/MimeTypes.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/utils/MimeTypes.kt @@ -104,9 +104,8 @@ object MimeTypes { else -> false } - // as of androidx.exifinterface:exifinterface:1.3.3 + // as of androidx.exifinterface:exifinterface:1.3.4 fun canEditExif(mimeType: String) = when (mimeType) { - DNG, JPEG, PNG, WEBP -> true diff --git a/android/build.gradle b/android/build.gradle index 48bd8fe42..42c5dc7f7 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -13,7 +13,7 @@ buildscript { classpath 'com.google.gms:google-services:4.3.14' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2' // HMS (used by some flavors only) - classpath 'com.huawei.agconnect:agcp:1.5.2.300' + classpath 'com.huawei.agconnect:agcp:1.7.2.300' } } diff --git a/lib/model/entry.dart b/lib/model/entry.dart index 23d05ce2e..a057462b0 100644 --- a/lib/model/entry.dart +++ b/lib/model/entry.dart @@ -294,9 +294,9 @@ class AvesEntry { bool get canRotateAndFlip => canEdit && canEditExif; - // as of androidx.exifinterface:exifinterface:1.3.3 - // `exifinterface` declares support for DNG, but `exifinterface` strips non-standard Exif tags when saving attributes, - // and DNG requires DNG-specific tags saved along standard Exif. So `exifinterface` actually breaks DNG files. + // `exifinterface` v1.3.3 declared support for DNG, but it strips non-standard Exif tags when saving attributes, + // and DNG requires DNG-specific tags saved along standard Exif. So it was actually breaking DNG files. + // as of androidx.exifinterface:exifinterface:1.3.4 bool get canEditExif { switch (mimeType.toLowerCase()) { case MimeTypes.jpeg: diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart index 19ee8ddd3..0eee4039a 100644 --- a/lib/widgets/home_page.dart +++ b/lib/widgets/home_page.dart @@ -95,6 +95,9 @@ class _HomePageState extends State { // hide in some countries apps that force quit on permission denial await [ Permission.storage, + // for media access on Android >=13 + Permission.photos, + Permission.videos, // to access media with unredacted metadata with scoped storage (Android >=10) Permission.accessMediaLocation, ].request(); diff --git a/plugins/aves_services_huawei/lib/aves_services_platform.dart b/plugins/aves_services_huawei/lib/aves_services_platform.dart index 528e29e1d..6648b9ae7 100644 --- a/plugins/aves_services_huawei/lib/aves_services_platform.dart +++ b/plugins/aves_services_huawei/lib/aves_services_platform.dart @@ -19,8 +19,12 @@ class PlatformMobileServices extends MobileServices { @override Future init() async { - final result = await HmsApiAvailability().isHMSAvailable(); - _isAvailable = result == _hmsCoreAvailable; + try { + final result = await HmsApiAvailability().isHMSAvailable(); + _isAvailable = result == _hmsCoreAvailable; + } on Exception catch (e, stack) { + debugPrint('Failed to check services availability with exception=$e, stack=$stack'); + } debugPrint('Device has Huawei Mobile Services=$_isAvailable'); final apiKey = await AvesPlatformMetaPlatform.instance.getMetadata(manifestApiKey); diff --git a/pubspec.lock b/pubspec.lock index 55c2586c5..743fc4ada 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -14,7 +14,7 @@ packages: name: _flutterfire_internals url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.2" analyzer: dependency: transitive description: @@ -126,14 +126,14 @@ packages: name: cloud_firestore_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "5.7.6" + version: "5.7.7" cloud_firestore_web: dependency: transitive description: name: cloud_firestore_web url: "https://pub.dartlang.org" source: hosted - version: "2.8.9" + version: "2.8.10" collection: dependency: "direct main" description: @@ -147,7 +147,7 @@ packages: name: connectivity_plus url: "https://pub.dartlang.org" source: hosted - version: "2.3.8" + version: "2.3.9" connectivity_plus_linux: dependency: transitive description: @@ -175,7 +175,7 @@ packages: name: connectivity_plus_web url: "https://pub.dartlang.org" source: hosted - version: "1.2.4" + version: "1.2.5" connectivity_plus_windows: dependency: transitive description: @@ -238,42 +238,42 @@ packages: name: device_info_plus url: "https://pub.dartlang.org" source: hosted - version: "5.0.1" + version: "5.0.5" device_info_plus_linux: dependency: transitive description: name: device_info_plus_linux url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.0.2" device_info_plus_macos: dependency: transitive description: name: device_info_plus_macos url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.0.2" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.0.1" device_info_plus_web: dependency: transitive description: name: device_info_plus_web url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.0.2" device_info_plus_windows: dependency: transitive description: name: device_info_plus_windows url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "5.0.2" dynamic_color: dependency: "direct main" description: @@ -361,14 +361,14 @@ packages: name: firebase_crashlytics url: "https://pub.dartlang.org" source: hosted - version: "2.8.12" + version: "2.8.13" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "3.2.18" + version: "3.2.19" flex_color_picker: dependency: "direct main" description: @@ -615,7 +615,7 @@ packages: name: logging url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.1.0" markdown: dependency: transitive description: @@ -845,7 +845,7 @@ packages: name: permission_handler_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "3.8.0" + version: "3.9.0" permission_handler_windows: dependency: transitive description: @@ -937,13 +937,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.1" - quiver: - dependency: transitive - description: - name: quiver - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" screen_brightness: dependency: "direct main" description: @@ -985,7 +978,7 @@ packages: name: screen_brightness_windows url: "https://pub.dartlang.org" source: hosted - version: "0.1.0" + version: "0.1.1" shared_preferences: dependency: "direct main" description: @@ -1109,7 +1102,7 @@ packages: name: sqflite url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.0+1" sqflite_common: dependency: transitive description: @@ -1137,7 +1130,7 @@ packages: name: stream_transform url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" streams_channel: dependency: "direct main" description: @@ -1209,7 +1202,7 @@ packages: name: tuple url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" typed_data: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 3b6c8c20a..f12c286b6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -86,7 +86,8 @@ dependencies: xml: dependency_overrides: - # TODO TLAD as of 2022/06/18, latest version (v10.0.0) does not support Android 13 storage permissions + # TODO TLAD as of 2022/10/09, latest version (v10.1.0) does not support Android 13 storage permissions + # `permission_handler_platform_interface` v3.9.0 added support for them but it is not effective permission_handler_android: git: url: https://github.com/deckerst/flutter-permission-handler