【问题标题】:PickPhotoAsync - the first time it doesn't workPickPhotoAsync - 第一次不起作用
【发布时间】:2020-11-17 23:34:38
【问题描述】:

我第一次使用该应用程序时,在确认访问画廊中保存的照片的权限后,pickphoto async 似乎什么也没做。

我认为问题在于它不等待用户授权。

为了正常工作,我必须多次点击照片的上传按钮。

我正在使用带有最新版本库的 android。

await CrossMedia.Current.Initialize();
if (!CrossMedia.Current.IsPickPhotoSupported)
{
    await DisplayAlert("Oops", "You Cannot pick an image", AppResources.Label_OK);
    return;
}
var file = await CrossMedia.Current.PickPhotoAsync(new PickMediaOptions
{
    PhotoSize = PhotoSize.MaxWidthHeight,
    MaxWidthHeight = 800,
    SaveMetaData = false
});

【问题讨论】:

  • 首先确保您已将CAMERAREAD_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE 权限添加到您的AndroidManifest,还确保创建file_provider 配置文件check the Media Plugin Readme,最后我总是在之后检查权限await CrossMedia.Current.Initialize(); 行和在执行 PickPhotoAsync 之前,当然初始化和选择都在等待。

标签: xamarin xamarin.forms xamarin.android xamarin.essentials montemagno-media.plugin


【解决方案1】:

您可以在加载页面之前请求运行时权限。之后,您无需多次点击照片的上传按钮。

    protected override void OnAppearing()
{
    base.OnAppearing();
    RunTimePermission();//ask for the runtime permission
}

【讨论】:

    【解决方案2】:

    我感谢回答我的人。 我发现了错误:

    错误代码:

     public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
    {
        PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }
    

    正确代码:

    public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults)
    {
        Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-16
      • 2018-10-25
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多