[image_picker] moves Android 13 image picker to options (#3370)

[image_picker] moves Android 13 image picker to options
diff --git a/packages/image_picker/image_picker/CHANGELOG.md b/packages/image_picker/image_picker/CHANGELOG.md
index 7969e21..fe845b3 100644
--- a/packages/image_picker/image_picker/CHANGELOG.md
+++ b/packages/image_picker/image_picker/CHANGELOG.md
@@ -1,5 +1,6 @@
-## NEXT
+## 0.8.7
 
+* Adds `usePhotoPickerAndroid` options.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 0.8.6+4
diff --git a/packages/image_picker/image_picker/README.md b/packages/image_picker/image_picker/README.md
index 6c886f0..3d5a11a 100755
--- a/packages/image_picker/image_picker/README.md
+++ b/packages/image_picker/image_picker/README.md
@@ -93,6 +93,11 @@
 [example app](https://pub.dev/packages/image_picker/example) for a more
 complete example of handling this flow.
 
+### Android Photo Picker
+
+This package has optional [Android Photo Picker](https://developer.android.com/training/data-storage/shared/photopicker) functionality. 
+[Learn how to use it](https://pub.dev/packages/image_picker_android).
+
 ## Migrating to 0.8.2+
 
 Starting with version **0.8.2** of the image_picker plugin, new methods have been added for picking files that return `XFile` instances (from the [cross_file](https://pub.dev/packages/cross_file) package) rather than the plugin's own `PickedFile` instances. While the previous methods still exist, it is already recommended to start migrating over to their new equivalents. Eventually, `PickedFile` and the methods that return instances of it will be deprecated and removed.
diff --git a/packages/image_picker/image_picker/pubspec.yaml b/packages/image_picker/image_picker/pubspec.yaml
index 86a8280..43c7ee3 100755
--- a/packages/image_picker/image_picker/pubspec.yaml
+++ b/packages/image_picker/image_picker/pubspec.yaml
@@ -3,7 +3,7 @@
   library, and taking new pictures with the camera.
 repository: https://github.com/flutter/packages/tree/main/packages/image_picker/image_picker
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
-version: 0.8.6+4
+version: 0.8.7
 
 environment:
   sdk: ">=2.17.0 <3.0.0"
diff --git a/packages/image_picker/image_picker_android/CHANGELOG.md b/packages/image_picker/image_picker_android/CHANGELOG.md
index bc0c6c4..b9ca0c5 100644
--- a/packages/image_picker/image_picker_android/CHANGELOG.md
+++ b/packages/image_picker/image_picker_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.8.6
+
+* Adds `usePhotoPickerAndroid` options.
+
 ## 0.8.5+10
 
 * Clarifies explanation of endorsement in README.
diff --git a/packages/image_picker/image_picker_android/README.md b/packages/image_picker/image_picker_android/README.md
index 7602dbe..32bc020 100755
--- a/packages/image_picker/image_picker_android/README.md
+++ b/packages/image_picker/image_picker_android/README.md
@@ -1,3 +1,5 @@
+<?code-excerpt path-base="excerpts/packages/image_picker_example"?>
+
 # image\_picker\_android
 
 The Android implementation of [`image_picker`][1].
@@ -11,5 +13,23 @@
 However, if you `import` this package to use any of its APIs directly, you
 should add it to your `pubspec.yaml` as usual.
 
+## Photo Picker
+
+This package has optional Android Photo Picker functionality.
+
+To use this feature, add the following code to your app before calling any `image_picker` APIs:
+
+<?code-excerpt "main.dart (photo-picker-example)"?>
+```dart
+import 'package:image_picker_android/image_picker_android.dart';
+import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
+// ···
+  final ImagePickerPlatform imagePickerImplementation =
+      ImagePickerPlatform.instance;
+  if (imagePickerImplementation is ImagePickerAndroid) {
+    imagePickerImplementation.useAndroidPhotoPicker = true;
+  }
+```
+
 [1]: https://pub.dev/packages/image_picker
 [2]: https://flutter.dev/docs/development/packages-and-plugins/developing-packages#endorsed-federated-plugin
diff --git a/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java b/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java
index 006eb3d..8f89e05 100644
--- a/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java
+++ b/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java
@@ -252,12 +252,18 @@
       return;
     }
 
-    launchPickVideoFromGalleryIntent();
+    Boolean usePhotoPicker = methodCall.argument("useAndroidPhotoPicker");
+
+    if (usePhotoPicker == null) {
+      usePhotoPicker = false;
+    }
+
+    launchPickVideoFromGalleryIntent(usePhotoPicker);
   }
 
-  private void launchPickVideoFromGalleryIntent() {
+  private void launchPickVideoFromGalleryIntent(Boolean useAndroidPhotoPicker) {
     Intent pickVideoIntent;
-    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+    if (useAndroidPhotoPicker && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
       pickVideoIntent =
           new ActivityResultContracts.PickVisualMedia()
               .createIntent(
@@ -326,7 +332,13 @@
       return;
     }
 
-    launchPickImageFromGalleryIntent();
+    Boolean usePhotoPicker = methodCall.argument("useAndroidPhotoPicker");
+
+    if (usePhotoPicker == null) {
+      usePhotoPicker = false;
+    }
+
+    launchPickImageFromGalleryIntent(usePhotoPicker);
   }
 
   public void chooseMultiImageFromGallery(MethodCall methodCall, MethodChannel.Result result) {
@@ -335,12 +347,18 @@
       return;
     }
 
-    launchMultiPickImageFromGalleryIntent();
+    Boolean usePhotoPicker = methodCall.argument("useAndroidPhotoPicker");
+
+    if (usePhotoPicker == null) {
+      usePhotoPicker = false;
+    }
+
+    launchMultiPickImageFromGalleryIntent(usePhotoPicker);
   }
 
-  private void launchPickImageFromGalleryIntent() {
+  private void launchPickImageFromGalleryIntent(Boolean useAndroidPhotoPicker) {
     Intent pickImageIntent;
-    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+    if (useAndroidPhotoPicker && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
       pickImageIntent =
           new ActivityResultContracts.PickVisualMedia()
               .createIntent(
@@ -356,9 +374,9 @@
     activity.startActivityForResult(pickImageIntent, REQUEST_CODE_CHOOSE_IMAGE_FROM_GALLERY);
   }
 
-  private void launchMultiPickImageFromGalleryIntent() {
+  private void launchMultiPickImageFromGalleryIntent(Boolean useAndroidPhotoPicker) {
     Intent pickMultiImageIntent;
-    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+    if (useAndroidPhotoPicker && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
       pickMultiImageIntent =
           new ActivityResultContracts.PickMultipleVisualMedia()
               .createIntent(
diff --git a/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java b/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java
index 29302d9..f8fb4db 100644
--- a/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java
+++ b/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java
@@ -162,6 +162,7 @@
       chooseImageFromGallery_WithPhotoPicker_WhenHasExternalStoragePermission_LaunchesChooseFromGalleryIntent() {
     when(mockPermissionManager.isPermissionGranted(Manifest.permission.READ_EXTERNAL_STORAGE))
         .thenReturn(true);
+    when(mockMethodCall.argument("useAndroidPhotoPicker")).thenReturn(true);
 
     ImagePickerDelegate delegate = createDelegate();
     delegate.chooseImageFromGallery(mockMethodCall, mockResult);
@@ -177,6 +178,7 @@
       chooseMultiImageFromGallery_WhenHasExternalStoragePermission_LaunchesChooseFromGalleryIntent() {
     when(mockPermissionManager.isPermissionGranted(Manifest.permission.READ_EXTERNAL_STORAGE))
         .thenReturn(true);
+    when(mockMethodCall.argument("useAndroidPhotoPicker")).thenReturn(true);
 
     ImagePickerDelegate delegate = createDelegate();
     delegate.chooseMultiImageFromGallery(mockMethodCall, mockResult);
@@ -193,6 +195,7 @@
       chooseMultiImageFromGallery_WithPhotoPicker_WhenHasExternalStoragePermission_LaunchesChooseFromGalleryIntent() {
     when(mockPermissionManager.isPermissionGranted(Manifest.permission.READ_EXTERNAL_STORAGE))
         .thenReturn(true);
+    when(mockMethodCall.argument("useAndroidPhotoPicker")).thenReturn(true);
 
     ImagePickerDelegate delegate = createDelegate();
     delegate.chooseMultiImageFromGallery(mockMethodCall, mockResult);
@@ -209,6 +212,7 @@
       chooseVideoFromGallery_WhenHasExternalStoragePermission_LaunchesChooseFromGalleryIntent() {
     when(mockPermissionManager.isPermissionGranted(Manifest.permission.READ_EXTERNAL_STORAGE))
         .thenReturn(true);
+    when(mockMethodCall.argument("useAndroidPhotoPicker")).thenReturn(true);
 
     ImagePickerDelegate delegate = createDelegate();
     delegate.chooseVideoFromGallery(mockMethodCall, mockResult);
@@ -224,6 +228,7 @@
       chooseVideoFromGallery_WithPhotoPicker_WhenHasExternalStoragePermission_LaunchesChooseFromGalleryIntent() {
     when(mockPermissionManager.isPermissionGranted(Manifest.permission.READ_EXTERNAL_STORAGE))
         .thenReturn(true);
+    when(mockMethodCall.argument("useAndroidPhotoPicker")).thenReturn(true);
 
     ImagePickerDelegate delegate = createDelegate();
     delegate.chooseVideoFromGallery(mockMethodCall, mockResult);
diff --git a/packages/image_picker/image_picker_android/example/build.excerpt.yaml b/packages/image_picker/image_picker_android/example/build.excerpt.yaml
new file mode 100644
index 0000000..e317efa
--- /dev/null
+++ b/packages/image_picker/image_picker_android/example/build.excerpt.yaml
@@ -0,0 +1,15 @@
+targets:
+  $default:
+    sources:
+      include:
+        - lib/**
+        # Some default includes that aren't really used here but will prevent
+        # false-negative warnings:
+        - $package$
+        - lib/$lib$
+      exclude:
+        - '**/.*/**'
+        - '**/build/**'
+    builders:
+      code_excerpter|code_excerpter:
+        enabled: true
diff --git a/packages/image_picker/image_picker_android/example/lib/main.dart b/packages/image_picker/image_picker_android/example/lib/main.dart
index 2e5b2e5..c456fb9 100755
--- a/packages/image_picker/image_picker_android/example/lib/main.dart
+++ b/packages/image_picker/image_picker_android/example/lib/main.dart
@@ -10,7 +10,10 @@
 import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_driver/driver_extension.dart';
+// #docregion photo-picker-example
+import 'package:image_picker_android/image_picker_android.dart';
 import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
+// #enddocregion photo-picker-example
 import 'package:video_player/video_player.dart';
 
 void appMain() {
@@ -19,6 +22,14 @@
 }
 
 void main() {
+  // Set to use Android Photo Picker.
+  // #docregion photo-picker-example
+  final ImagePickerPlatform imagePickerImplementation =
+      ImagePickerPlatform.instance;
+  if (imagePickerImplementation is ImagePickerAndroid) {
+    imagePickerImplementation.useAndroidPhotoPicker = true;
+  }
+  // #enddocregion photo-picker-example
   runApp(const MyApp());
 }
 
diff --git a/packages/image_picker/image_picker_android/example/pubspec.yaml b/packages/image_picker/image_picker_android/example/pubspec.yaml
old mode 100755
new mode 100644
index 5b0f3e0..52778a4
--- a/packages/image_picker/image_picker_android/example/pubspec.yaml
+++ b/packages/image_picker/image_picker_android/example/pubspec.yaml
@@ -23,6 +23,7 @@
   video_player: ^2.1.4
 
 dev_dependencies:
+  build_runner: ^2.1.10
   espresso: ^0.2.0
   flutter_test:
     sdk: flutter
diff --git a/packages/image_picker/image_picker_android/lib/image_picker_android.dart b/packages/image_picker/image_picker_android/lib/image_picker_android.dart
index b6073c7..97c981e 100644
--- a/packages/image_picker/image_picker_android/lib/image_picker_android.dart
+++ b/packages/image_picker/image_picker_android/lib/image_picker_android.dart
@@ -83,6 +83,7 @@
         'maxWidth': maxWidth,
         'maxHeight': maxHeight,
         'imageQuality': imageQuality,
+        'useAndroidPhotoPicker': useAndroidPhotoPicker,
       },
     );
   }
@@ -117,6 +118,7 @@
         'imageQuality': imageQuality,
         'cameraDevice': preferredCameraDevice.index,
         'requestFullMetadata': requestFullMetadata,
+        'useAndroidPhotoPicker': useAndroidPhotoPicker,
       },
     );
   }
@@ -145,7 +147,8 @@
       <String, dynamic>{
         'source': source.index,
         'maxDuration': maxDuration?.inSeconds,
-        'cameraDevice': preferredCameraDevice.index
+        'cameraDevice': preferredCameraDevice.index,
+        'useAndroidPhotoPicker': useAndroidPhotoPicker,
       },
     );
   }
@@ -279,4 +282,9 @@
       files: pickedFileList,
     );
   }
+
+  /// Set [ImagePickerAndroid] to use Android 13 Photo Picker.
+  ///
+  /// Currently defaults to false, but the default is subject to change.
+  bool useAndroidPhotoPicker = false;
 }
diff --git a/packages/image_picker/image_picker_android/pubspec.yaml b/packages/image_picker/image_picker_android/pubspec.yaml
index 30b95c3..1c22e9c 100755
--- a/packages/image_picker/image_picker_android/pubspec.yaml
+++ b/packages/image_picker/image_picker_android/pubspec.yaml
@@ -3,7 +3,7 @@
 repository: https://github.com/flutter/packages/tree/main/packages/image_picker/image_picker_android
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
 
-version: 0.8.5+10
+version: 0.8.6
 
 environment:
   sdk: ">=2.17.0 <3.0.0"
diff --git a/packages/image_picker/image_picker_android/test/image_picker_android_test.dart b/packages/image_picker/image_picker_android/test/image_picker_android_test.dart
index d6680ce..4c9d31a 100644
--- a/packages/image_picker/image_picker_android/test/image_picker_android_test.dart
+++ b/packages/image_picker/image_picker_android/test/image_picker_android_test.dart
@@ -49,6 +49,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 1,
@@ -57,6 +58,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -104,6 +106,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -112,6 +115,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -120,6 +124,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -128,6 +133,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -136,6 +142,7 @@
             'imageQuality': 70,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -144,6 +151,7 @@
             'imageQuality': 70,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -152,6 +160,7 @@
             'imageQuality': 70,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -214,6 +223,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -234,6 +244,7 @@
             'imageQuality': null,
             'cameraDevice': 1,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -252,6 +263,7 @@
             'maxWidth': null,
             'maxHeight': null,
             'imageQuality': null,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -291,36 +303,43 @@
             'maxWidth': null,
             'maxHeight': null,
             'imageQuality': null,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': 10.0,
             'maxHeight': null,
             'imageQuality': null,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': null,
             'maxHeight': 10.0,
             'imageQuality': null,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': 10.0,
             'maxHeight': 20.0,
             'imageQuality': null,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': 10.0,
             'maxHeight': null,
             'imageQuality': 70,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': null,
             'maxHeight': 10.0,
             'imageQuality': 70,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': 10.0,
             'maxHeight': 20.0,
             'imageQuality': 70,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -375,11 +394,13 @@
             'source': 0,
             'cameraDevice': 0,
             'maxDuration': null,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickVideo', arguments: <String, dynamic>{
             'source': 1,
             'cameraDevice': 0,
             'maxDuration': null,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -406,21 +427,25 @@
             'source': 0,
             'maxDuration': null,
             'cameraDevice': 0,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickVideo', arguments: <String, dynamic>{
             'source': 0,
             'maxDuration': 10,
             'cameraDevice': 0,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickVideo', arguments: <String, dynamic>{
             'source': 0,
             'maxDuration': 60,
             'cameraDevice': 0,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickVideo', arguments: <String, dynamic>{
             'source': 0,
             'maxDuration': 3600,
             'cameraDevice': 0,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -446,6 +471,7 @@
             'source': 0,
             'cameraDevice': 0,
             'maxDuration': null,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -464,6 +490,7 @@
             'source': 0,
             'maxDuration': null,
             'cameraDevice': 1,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -546,6 +573,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 1,
@@ -554,6 +582,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -601,6 +630,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -609,6 +639,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -617,6 +648,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -625,6 +657,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -633,6 +666,7 @@
             'imageQuality': 70,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -641,6 +675,7 @@
             'imageQuality': 70,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -649,6 +684,7 @@
             'imageQuality': 70,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -711,6 +747,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -731,6 +768,7 @@
             'imageQuality': null,
             'cameraDevice': 1,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -749,6 +787,7 @@
             'maxWidth': null,
             'maxHeight': null,
             'imageQuality': null,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -788,36 +827,43 @@
             'maxWidth': null,
             'maxHeight': null,
             'imageQuality': null,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': 10.0,
             'maxHeight': null,
             'imageQuality': null,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': null,
             'maxHeight': 10.0,
             'imageQuality': null,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': 10.0,
             'maxHeight': 20.0,
             'imageQuality': null,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': 10.0,
             'maxHeight': null,
             'imageQuality': 70,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': null,
             'maxHeight': 10.0,
             'imageQuality': 70,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickMultiImage', arguments: <String, dynamic>{
             'maxWidth': 10.0,
             'maxHeight': 20.0,
             'imageQuality': 70,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -872,11 +918,13 @@
             'source': 0,
             'cameraDevice': 0,
             'maxDuration': null,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickVideo', arguments: <String, dynamic>{
             'source': 1,
             'cameraDevice': 0,
             'maxDuration': null,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -903,21 +951,25 @@
             'source': 0,
             'maxDuration': null,
             'cameraDevice': 0,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickVideo', arguments: <String, dynamic>{
             'source': 0,
             'maxDuration': 10,
             'cameraDevice': 0,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickVideo', arguments: <String, dynamic>{
             'source': 0,
             'maxDuration': 60,
             'cameraDevice': 0,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickVideo', arguments: <String, dynamic>{
             'source': 0,
             'maxDuration': 3600,
             'cameraDevice': 0,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -943,6 +995,7 @@
             'source': 0,
             'cameraDevice': 0,
             'maxDuration': null,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -961,6 +1014,7 @@
             'source': 0,
             'maxDuration': null,
             'cameraDevice': 1,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -1062,6 +1116,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 1,
@@ -1070,6 +1125,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -1125,6 +1181,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -1133,6 +1190,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -1141,6 +1199,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -1149,6 +1208,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -1157,6 +1217,7 @@
             'imageQuality': 70,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -1165,6 +1226,7 @@
             'imageQuality': 70,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
           isMethodCall('pickImage', arguments: <String, dynamic>{
             'source': 0,
@@ -1173,6 +1235,7 @@
             'imageQuality': 70,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -1255,6 +1318,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -1278,6 +1342,7 @@
             'imageQuality': null,
             'cameraDevice': 1,
             'requestFullMetadata': true,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );
@@ -1299,6 +1364,7 @@
             'imageQuality': null,
             'cameraDevice': 0,
             'requestFullMetadata': false,
+            'useAndroidPhotoPicker': false,
           }),
         ],
       );