如何解决image_picker: ^0.7.2+1 使应用程序崩溃
我在我的应用中使用 image_picker:^0.7.2+1 here
我正在使用此代码打开相机
File _image;
final picker = ImagePicker();
Future getImage() async {
final pickedFile = await picker.getImage(source: ImageSource.camera);
setState(() {
if (pickedFile != null) {
_image = File(pickedFile.path);
} else {
print('No image selected.');
}
});
}
还在 android/app/src/main/AndroidManifest.xml 中添加了这些权限
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.INTERNET"
在我的相机立即打开时使用上述包后,应用程序崩溃并且在终端中没有错误消息,它只是说设备已断开连接。 (通过应用程序崩溃,我的意思是应用程序自动重新启动(从启动屏幕)并且捕获的图像也会丢失)
上述应用程序崩溃问题仅出现在 android 10 或更高版本的 android 版本中,也出现在 android 10 或更高版本 (android 11) 中,而且此软件包不要求在 android 10 或 11 中获得相机的许可,我想这可能是实际情况这个问题背后的问题
当我使用 android 8 或 android 版本低于 android 10 的设备时,image_picker: ^0.7.2+1 here 与上面给出的代码完全相同(代码中没有任何更改只是更改了设备从 android 11 到 android 8)应用程序按预期请求许可,然后相机打开并成功捕获图片,因此一切正常,在 android 10 或 android 11 中同样的事情失败
注意:我也尝试将permission_handler 插件与image_picker 一起使用,但它对我也不起作用
谁能帮我解决这个问题
另外,如果有人知道 image_picker 的任何替代代码或包,请告诉我..我只想在颤动中从相机拍摄照片
解决方法
将 android:requestLegacyExternalStorage="true"
作为属性添加到 AndroidManifest.xml 中的 <application>
标记。在面向 Android Q 的应用中,该属性默认为 false。
我也经历了所有这些,设置权限处理,修复缓存,以及我在网上找到的其他一些东西,一周后无法解决。我拍摄后,Image_picker 仍然使我的应用程序崩溃。我最终的解决方案是使用camera_camera 2.0.1。这是一个糟糕的库名称,它不包含压缩,但相机界面更好,而且开箱即用。
import 'package:camera_camera/camera_camera.dart';
onPressed: (){
Navigator.push( context,MaterialPageRoute(
builder: (_) => CameraCamera(
onFile: (file) {
// Do what you like with File file
// I convert to base64 ready to upload
Navigator.pop(context);
},)))
},
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。