C# Xamarin权限插件RequestPermissionsAsync未返回

C# Xamarin权限插件RequestPermissionsAsync未返回,c#,xamarin,xamarin.forms,permissions,C#,Xamarin,Xamarin.forms,Permissions,我试着在creators github帐户中打开这张罚单,但他只是一直关闭它,没有确认问题已经解决 我正在尝试为xamarin表单权限实现插件,除了一件事之外,其他一切都很好,当我尝试使用真实设备请求权限时,任务永远不会返回用户是否允许或拒绝请求。当我重新启动项目时,我可以看到用户关于权限的最后一个操作已经生效,但是在请求的那一刻,该功能只是挂起,我无法根据用户选择的内容做出决定。下面是一段代码片段 var status = await CrossPermissions.Current.Chec

我试着在creators github帐户中打开这张罚单,但他只是一直关闭它,没有确认问题已经解决

我正在尝试为xamarin表单权限实现插件,除了一件事之外,其他一切都很好,当我尝试使用真实设备请求权限时,任务永远不会返回用户是否允许或拒绝请求。当我重新启动项目时,我可以看到用户关于权限的最后一个操作已经生效,但是在请求的那一刻,该功能只是挂起,我无法根据用户选择的内容做出决定。下面是一段代码片段

var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location);
                if (status != PermissionStatus.Granted)
                {
                    //This line never returns
                    var results = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Location);
                    status = results[Permission.Location];
                }

也许这里的任何人都能说明问题?任何帮助都将不胜感激。谢谢。

除了在Android清单中指定权限和初始化CurrentActivity外,不要忘记覆盖MainActivity中的OnRequestPermissionsResult方法,以便将权限结果传递给PermissionsImplementation,如页面所述:


这个问题我已经解决了一段时间了。您可以按照这些步骤来确保完美的安装

在NuGet解决方案管理器中:-

  • 安装适用于Android的NuGet
  • 安装适用于Android的NuGet
  • 为所有项目安装NUGet
  • 在Android MainActivity.cs:-

  • 添加此行
    CrossCurrentActivity.Current.Activity=thisbase.OnCreate(bundle/savedInstanceState)后的code>
    受保护的override void OnCreate
    方法下

  • 添加此方法-或覆盖它(如果存在):

  • public override void OnRequestPermissionsResult(int-requestCode,string[]permissions,[GeneratedEnum]Android.Content.PM.Permission[]grantResults)
    {
    PermissionsImplementation.Current.OnRequestPermissionsResult(请求代码、权限、grantResults);
    base.OnRequestPermissionsResult(请求代码、权限、GrantResult);
    }
    
  • 解决所有缺少的名称空间

  • 现在你应该已经有了一个完美的安装,去重试你的代码,它现在应该可以工作了。

    你在平台特定的代码中植入了插件吗?是的,这是我看到的第一件事,这是创建者一直在说的,但我已经做了itAndroid或iOS平台?设备的API级别或iOS版本?目前是Android,在HTC One M9上进行API级别24的测试。谢谢,我的情况下缺少currentactivity插件
        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults)
        {
            Plugin.Permissions.PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    
            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);    
        }