在我的flutter项目中,每当尝试使用flutter的image_picker
插件从Camera或Gallery拾取图像时,都会遇到异常。
它第一次请求许可,当我允许照相机时,它会抛出
java.lang.NullPointerException:尝试调用虚拟方法 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager,java.lang.String)'在空对象引用上
之后,每次后续尝试都会引发异常
PlatformException(已经激活,图像选择器已经处于活动状态, 空)
即使重新启动应用程序后,我仍然尝试选择相机或图库。
var imageSource;
if (source == CAMERA_SOURCE) {
imageSource = ImageSource.camera;
} else {
imageSource = ImageSource.gallery;
}
try {
final file = await ImagePicker.pickImage(source: imageSource);
if (file == null) {
throw Exception('File is not available');
}
下面是依赖项:
cupertino_icons: ^0.1.2
firebase_auth: ^0.8.1
cloud_firestore: ^0.9.0+1
firebase_core: ^0.3.0+1
firebase_messaging: ^3.0.1
firebase_storage: ^2.0.1
intl_translation: ^0.17.3
http: ^0.12.0+1
xml: ^3.3.1
uuid: ^2.0.0
shared_preferences: ^0.5.1+1
flutter_staggered_grid_view: ^0.2.7
google_sign_in: ^4.0.1
flutter_signin_button: ^0.2.5
image_picker: ^0.5.0+2
mlkit: ^0.9.0
path_provider: ^0.5.0+1
感谢您的时间!我还尝试将Flutter升级到最新版本。
答案 0 :(得分:3)
更改 android/build.gradle 类路径 'com.android.tools.build:gradle:3.5.4'
这对我有用。
答案 1 :(得分:1)
我将软件包从0.5.4+3
更新为^0.6.5+2
,这解决了我的问题。
如果您阅读变更日志,则将看到所有已解决的问题:https://pub.dev/packages/image_picker#-changelog-tab-
答案 2 :(得分:0)
最后我能够解决它。
我更新了所有依赖项和flutter SDK,然后进行了Flutter清理并开始工作。.
感谢您的时间和帮助
答案 3 :(得分:0)
按照注释中的说明删除并重新安装应用程序可以解决此问题。
答案 4 :(得分:0)
答案 5 :(得分:0)
如果你有基于通道的代码,即原生 Android 和 Flutter 之间的桥梁.. 在主活动中 活动结果 .. 尝试添加..
<块引用>super.onActivityResult(requestCode, resultCode, data)
答案 6 :(得分:0)
无论如何,我在使用 Image Picker 时遇到了同样的问题。
问题解决了,需要在release模式下提供访问相机和内存的权限。
在安卓上:
在文件 src/main/AndroidManifest.xml
上添加行:在清单标记内
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在IOS上:
在文件 Info.plist
上添加行:
<key>NSPhotoLibraryUsageDescription</key>
<string>Allow access to photo library</string>
<key>NSCameraUsageDescription</key>
<string>Allow access to camera to capture photos</string>
祝你好运,希望有用!