简体   繁体   中英

Flutter image_picker provider error when trying to open camera

I added image_picker to my flutter app, it works when picking from gallery but when I try to get image from camera it gives following error ( I am using Android 11):

E/MethodChannel#plugins.flutter.io/image_picker(17622): Failed to handle method call E/MethodChannel#plugins.flutter.io/image_picker(17622): java.lang.IllegalArgumentException: Couldn't find meta-data for provider with authority <package_name>.flutter.image_provider E/MethodChannel#plugins.flutter.io/image_picker(17622): at androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:606) E/MethodChannel#plugins.flutter.io/image_picker(17622): at androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:579) E/MethodChannel#plugins.flutter.io/image_picker(17622): at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:417) E/MethodChannel#plugins.flutter.io/image_picker(17622): at io.flutter.plugins.imagepicker.ImagePickerDelegate$3.resolveFileProviderUriForFile(ImagePickerDelegate.java:160) E/MethodChannel#plugins.flutter.io/image_picker(17622): at io.flutter.plugins.imagepicker.ImagePickerDelegate.launchTakeImageWithCameraIntent(ImagePickerDelegate.java:384) E/MethodChannel#plugins.flutter.io/image_picker(17622): at io.flutter.plugins.imagepicker.ImagePickerDelegate.takeImageWithCamera(ImagePickerDelegate.java:358) E/MethodChannel#plugins.flutter.io/image_picker(17622): at io.flutter.plugins.imagepicker.ImagePickerPlugin.onMethodCall(ImagePickerPlugin.java:300) E/MethodChannel#plugins.flutter.io/image_picker(17622): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233) E/MethodChannel#plugins.flutter.io/image_picker(17622): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85) E/MethodChannel#plugins.flutter.io/image_picker(17622): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:818) E/MethodChannel#plugins.flutter.io/image_picker(17622): at android.os.MessageQueue.nativePollOnce(Native Method) E/MethodChannel#plugins.flutter.io/image_picker(17622): at android.os.MessageQueue.next(MessageQueue.java:335) E/MethodChannel#plugins.flutter.io/image_picker(17622): at android.os.Looper.loop(Looper.java:206) E/MethodChannel#plugins.flutter.io/image_picker(17622): at android.app.ActivityThread.main(ActivityThread.java:8512) E/MethodChannel#plugins.flutter.io/image_picker(17622): at java.lang.reflect.Method.invoke(Native Method) E/MethodChannel#plugins.flutter.io/image_picker(17622): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) E/MethodChannel#plugins.flutter.io/image_picker(17622): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

here is my code:


  File _image;

  ImagePicker picker = ImagePicker();

  Future pickImage(ImageSource source) async {
    print("picking image");
    try {
      final pickedFile = await picker.getImage(
          source: source,
          preferredCameraDevice: CameraDevice.rear,
          );

      
      if (pickedFile != null) {
        setState(() {
          _image = File(pickedFile.path);
        });
      } else {
        return null;
      }
    } catch (e) {
      print("error");
    }
  }

 .
 .
 .

 onTap: () {
     var source = ImageSource.gallery;
   
     pickImage(source);
   },
 .
 .
 .
  onTap: () {
     var source = ImageSource.camera;
    
     pickImage(source);
   },

when I add provider to andoridmanifest there is another error.

E/MethodChannel#plugins.flutter.io/image_picker(14565): Failed to handle method call E/MethodChannel#plugins.flutter.io/image_picker(14565): java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/<package_name>/cache/91958bf6-db2c-46d3-bf0c-b31c3dd0fc1c2799268083033056301.jpg E/MethodChannel#plugins.flutter.io/image_picker(14565): at androidx.core.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:744) E/MethodChannel#plugins.flutter.io/image_picker(14565): at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:418) E/MethodChannel#plugins.flutter.io/image_picker(14565): at io.flutter.plugins.imagepicker.ImagePickerDelegate$3.resolveFileProviderUriForFile(ImagePickerDelegate.java:160) E/MethodChannel#plugins.flutter.io/image_picker(14565): at io.flutter.plugins.imagepicker.ImagePickerDelegate.launchTakeImageWithCameraIntent(ImagePickerDelegate.java:384) E/MethodChannel#plugins.flutter.io/image_picker(14565): at io.flutter.plugins.imagepicker.ImagePickerDelegate.takeImageWithCamera(ImagePickerDelegate.java:358) E/MethodChannel#plugins.flutter.io/image_picker(14565): at io.flutter.plugins.imagepicker.ImagePickerPlugin.onMethodCall(ImagePickerPlugin.java:300) E/MethodChannel#plugins.flutter.io/image_picker(14565): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233) E/MethodChannel#plugins.flutter.io/image_picker(14565): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85) E/MethodChannel#plugins.flutter.io/image_picker(14565): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:818) E/MethodChannel#plugins.flutter.io/image_picker(14565): at android.os.MessageQueue.nativePollOnce(Native Method) E/MethodChannel#plugins.flutter.io/image_picker(14565): at android.os.MessageQueue.next(MessageQueue.java:335) E/MethodChannel#plugins.flutter.io/image_picker(14565): at android.os.Looper.loop(Looper.java:206) E/MethodChannel#plugins.flutter.io/image_picker(14565): at android.app.ActivityThread.main(ActivityThread.java:8512) E/MethodChannel#plugins.flutter.io/image_picker(14565): at java.lang.reflect.Method.invoke(Native Method) E/MethodChannel#plugins.flutter.io/image_picker(14565): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) E/MethodChannel#plugins.flutter.io/image_picker(14565): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

通过将<cache-path name="cache" path="."/>到 @xml/filepaths 来修复

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM