gpt4 book ai didi

c# - 一次显示多个权限xamarin表单

转载 作者:行者123 更新时间:2023-12-02 03:26:13 24 4
gpt4 key购买 nike

我正在为 Android 和 IOS 创建 Xamarin Form PCL 项目。是否可以在屏幕上同时显示多个权限?我的应用程序正在使用位置、存储和相机权限。从我当前的代码来看,这是在不同页面上一一显示权限弹出窗口,就像使用相机之前一样,我显示相机权限弹出窗口。据我所知,我的应用程序需要三个权限,因此我想为所有三个权限显示一个弹出窗口。下面是我的存储权限代码。

public static async Task<dynamic> CheckStoragePermission()
{
var result = "";
try
{
var Storagestatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Plugin.Permissions.Abstractions.Permission.Storage);
if (Storagestatus != PermissionStatus.Granted)
{
await Utils.CheckPermissions(Plugin.Permissions.Abstractions.Permission.Storage);
}
}
catch (Exception ex)
{
error(ex.Message, Convert.ToString(ex.InnerException), ex.Source, ex.StackTrace);
}
return result;
}

希望有人以前以 Xamarin 形式做过此操作,我将感谢您的帮助。

最佳答案

您可以尝试使用以下代码一次请求多个权限:

private async void Button_Clicked(object sender, EventArgs e)
{
await GetPermissions();
}


public static async Task<bool> GetPermissions()
{
bool permissionsGranted = true;

var permissionsStartList = new List<Permission>()
{
Permission.Location,
Permission.LocationAlways,
Permission.LocationWhenInUse,
Permission.Storage,
Permission.Camera
};

var permissionsNeededList = new List<Permission>();
try
{
foreach (var permission in permissionsStartList)
{
var status = await CrossPermissions.Current.CheckPermissionStatusAsync(permission);
if (status != PermissionStatus.Granted)
{
permissionsNeededList.Add(permission);
}
}
}
catch (Exception ex)
{
}

var results = await CrossPermissions.Current.RequestPermissionsAsync(permissionsNeededList.ToArray());

try
{
foreach (var permission in permissionsNeededList)
{
var status = PermissionStatus.Unknown;
//Best practice to always check that the key exists
if (results.ContainsKey(permission))
status = results[permission];
if (status == PermissionStatus.Granted || status == PermissionStatus.Unknown)
{
permissionsGranted = true;
}
else
{
permissionsGranted = false;
break;
}
}
}
catch (Exception ex)
{
}
return permissionsGranted;
}

关于c# - 一次显示多个权限xamarin表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53333745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com