gpt4 book ai didi

c# - 如何在 xamarin.forms 中一次显示多个权限?

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:06 25 4
gpt4 key购买 nike

我想在应用程序启动时或启动画面后显示相机和位置的运行时权限弹出窗口。

我正在使用 NuGet 包:https://github.com/jamesmontemagno/PermissionsPlugin

我已经在按钮点击事件上尝试了下面的代码。

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;
}

请给出您的建议或更好的方法。

最佳答案

I want to show runtime permission popup for camera and location when the app starts or after splash screen.

如果您想要在应用程序启动时或启动画面之后允许相机和位置的弹出窗口。

您可以在 MainPage 的 OnAppearing() 中调用 GetPermissions 方法:

public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}

protected override async void OnAppearing()
{
base.OnAppearing();

bool a = await GetPermissions();
}

public static async Task<bool> GetPermissions()
{
....
}
}

注意:

  1. 如前所述here ,当您安装 PermissionsPlugin 时,它还会将一个名为“MainApplication.cs”的文件安装到您的 Android 应用中,并且该文件必须存在。

  2. 并确保您选择了 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGEACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION 权限右键单击 xxxx.Android 项目--> Properties --> Android Mainfest --> 所需权限.

我上传了一个sample你可以检查。让我知道它是否有效。

关于c# - 如何在 xamarin.forms 中一次显示多个权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56299230/

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