一次显示多个权限xamarin表单

2024-04-14

我正在为 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;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一次显示多个权限xamarin表单 的相关文章

随机推荐