我一直在开发一个包含XLabs Nuget软件包的应用程序 - 更具体一点,我正在使用Xlabs来利用Xamarin.Forms PCL项目中的跨平台图片选择。
该应用程序编译没有任何问题,它可以在Kitkat,Lolipop和Marshmallow Xamarin Android Emulators上完美运行。
现在,当我导出应用程序并尝试在物理设备上运行它时会出现问题 - Android 6.0+。它在所有Android设备(4.0-5.1)上都没有任何问题,除了在Marshmallow上,每当我尝试使用MediaPicker从图库中选择照片时(当我点击图库中的图片时)它就会挂起。
以下asyc代码永远不会在Marshmallow设备上执行:
private async Task SelectPicture()
{
Setup();
ImageSource = null;
try
{
var mediaFile = await _mediaPicker.SelectPhotoAsync(new CameraMediaStorageOptions
{
DefaultCamera = CameraDevice.Front,
MaxPixelDimension = 400
});
ImageSource = ImageSource.FromStream(() => mediaFile.Source);
}
catch (System.Exception ex)
{
Status = ex.Message;
}
}
如果我再次尝试点击图片选择按钮,则会抛出错误:
Only one operation can be active at a time
同样,代码在Android 6.0 / Marshmallow以下的任何地方执行完全正常。
起初我以为我错过了一些SKDS和/或最新的软件包,但事实并非如此,问题仍然存在。
其次,我已启用所有必要的权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
但是,现在我开始认为仅仅这些已定义的权限是不够的。也许我需要允许访问和写入后面代码的内存。
任何提示将不胜感激。