如何显示自定义权限消息

时间:2018-11-22 08:16:41

标签: c# xamarin.forms

我想向用户显示自定义消息以获取应用许可。我正在使用Plugin.Permissions来获得App权限。当我运行当前代码并运行应用程序时,此弹出消息将显示Allow {App Name} to access this device location?。以下是我目前正在使用的功能。

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

    var permissionsStartList = new List<Permission>()
    {
        Permission.Location,           
        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;
}

感谢您的帮助和评论

1 个答案:

答案 0 :(得分:2)

遗憾的是,无法自定义权限对话框中的文本。

这些是系统对话框,该应用无法控制其内容。

引用https://developer.android.com/training/permissions/requesting#perm-request

  

当您的应用从checkSelfPermission()收到PERMISSION_DENIED时,您需要提示用户该权限。 Android提供了几种可用于请求权限的方法,例如requestPermissions(),如下面的代码片段所示。 调用这些方法会弹出一个标准的Android对话框,您无法对其进行自定义。

     

显示给用户的方式取决于设备的Android版本以及应用程序的目标版本,如权限概述中所述。