Xamarin 表单android检查用户是否单击了拒绝和Don';别再问了

Xamarin 表单android检查用户是否单击了拒绝和Don';别再问了,xamarin,xamarin.forms,xamarin.android,Xamarin,Xamarin.forms,Xamarin.android,在我的xamarin.forms应用程序中。我正在使用xamarin.Essentials检查和请求权限。我可以检查android中是否授予了权限。我面临的问题是,当用户单击“拒绝并不再询问”时,状态仍然显示为Denied。我们如何知道用户是否选择了拒绝和不询问,以便根据该信息显示警告消息。非常感谢您的帮助。查看Xamarin中的检查和请求权限。您也可以使用nuget中的插件 只有在您第二次拒绝请求时,才会出现“拒绝”和“不再询问”选项。但是,没有这样一个特定的状态来标记它 作为一种解决方法,我

在我的xamarin.forms应用程序中。我正在使用
xamarin.Essentials
检查和请求权限。我可以检查android中是否授予了权限。我面临的问题是,当用户单击“拒绝并不再询问”时,状态仍然显示为
Denied
。我们如何知道用户是否选择了
拒绝和不询问
,以便根据该信息显示警告消息。非常感谢您的帮助。

查看Xamarin中的检查和请求权限。您也可以使用nuget中的插件

只有在您第二次拒绝请求时,才会出现“拒绝”和“不再询问”选项。但是,没有这样一个特定的状态来标记它

作为一种解决方法,我们可以定义一个自定义属性来节省拒绝的时间

int DenyCount = 0;

        private async void FabOnClick(object sender, EventArgs eventArgs)
        {
            var status = await CrossPermissions.Current.CheckPermissionStatusAsync<LocationPermission>();
            if (status != PermissionStatus.Granted)
            {
                if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Location))
                {
                    //await DisplayAlert("Need location", "Gunna need that location", "OK");
                    DenyCount++;

                    if(DenyCount>=2)
                    {
                        //...
                    }

                }

                status = await CrossPermissions.Current.RequestPermissionAsync<LocationPermission>();
            }

            if (status == PermissionStatus.Granted)
            {
                //Query permission
                DenyCount = 0;  // reset the value of DenyCount
            }
            else if (status == PermissionStatus.Restricted)
            {
                //location denied
            }


        }
int DenyCount=0;
私有异步void FabOnClick(对象发送方,EventArgs EventArgs)
{
var status=await CrossPermissions.Current.CheckPermissionStatusAsync();
if(status!=PermissionStatus.grated)
{
if(wait CrossPermissions.Current.shouldShowRequestPermissionOriginaleAsync(Permission.Location))
{
//等待显示警报(“需要位置”,“Gunna需要该位置”,“确定”);
DenyCount++;
如果(DenyCount>=2)
{
//...
}
}
status=wait CrossPermissions.Current.RequestPermissionAsync();
}
if(status==PermissionStatus.grated)
{
//查询权限
DenyCount=0;//重置DenyCount的值
}
else if(status==PermissionStatus.Restricted)
{
//位置被拒绝
}
}

当您单击两次“拒绝”按钮时,将显示“拒绝”和“不问”选项。因此,您可以定义一个自定义属性来保存您单击的计数。@LucasZhang MSFT感谢您的响应。Don ask选项将在第二次显示。但唯一的拒绝选项也伴随着它。那么我们如何确定用户点击了哪个选项呢?@LucasZhang MSFT我按照你的建议解决了这个问题。谢谢,我会把它作为一个更详细的答案发布。你能接受吗?这将帮助更多有类似问题的人。@LucasZhang MSFT当然可以