首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Permissions.RequestAsync不返回

Permissions.RequestAsync不返回
EN

Stack Overflow用户
提问于 2022-08-30 16:38:08
回答 1查看 271关注 0票数 1

当调用Permissions.RequestAsync<Permissions.LocationWhenInUse>()时,我不会得到任何结果,而应用程序会陷入困境。不管是用户接受还是拒绝请求。

我已经设置了MainActivity,如文档中所述:

代码语言:javascript
复制
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults)
{
    Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

现在,我正试图以以下方式获得权限。但是RequestAsync的电话被卡住了,我从来没有收到过答案。一旦许可被授予,应用程序被重新启动,一切都如预期的那样工作。

代码语言:javascript
复制
public async Task CheckPermissions()
{
    var status = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>();

    if (status != PermissionStatus.Granted)
    {
        status = await Permissions.RequestAsync<Permissions.LocationWhenInUse>();
    }
    

    if (status == PermissionStatus.Granted)
    {
        HasLocationPermissions = true;
    }
    else if (status != PermissionStatus.Unknown)
    {
        HasLocationPermissions = false;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-30 18:40:55

在调用堆栈的更远的地方,同步阻塞调用可能导致这种情况;例如,.Wait().Result.GetAwaiter().GetResult()。这是我博客上描述的典型死锁情况

由于您正在编写Xamarin应用程序,您可能会发现这一技术很有帮助--它是启动异步操作(同步)的一种方法,显示了一个“加载.”状态,然后在异步操作完成时进行更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73545830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档