Android Marshmallow权限(MediaPicker / XLabs)

时间:2016-07-02 10:49:00

标签: android xamarin

我一直在开发一个包含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" />

但是,现在我开始认为仅仅这些已定义的权限是不够的。也许我需要允许访问和写入后面代码的内存。

任何提示将不胜感激。

0 个答案:

没有答案