首页 > 解决方案 > Xamarin 表单中运行时的相机和位置权限

问题描述

我创建了一个 Xamarin 表单应用程序,它需要两个权限,即 i)Location 和 ii)Camera。
我需要在运行时获得这两种权限,但不幸的是,当应用程序启动时,我一次只能获得一种权限。

是否有任何解决方案可以在运行时同时请求这两个权限。

标签: xamarinxamarin.formsxamarin.android

解决方案


最好不要在应用程序启动时请求权限,因为用户可能不知道它的用途。

还需要检查并在需要时请求许可。例如,在打开相机之前请求相机许可。

您可以使用Xamarin.Essentials完成所有这些操作。如果您的项目没有它,请按照文档说明进行设置。

然后您可以在共享代码中执行所有操作(适用于所有平台!)

例子很多,我写一个。您可以一个接一个地请求权限,或者在两个不同的时刻

public async void GoToCameraPage()
        {
            var status = await Permissions.CheckStatusAsync<Permissions.Camera>();
            if (status == PermissionStatus.Granted)
            {
                //We have permission!
                await Navigation.PushAsync(new CameraPage());
            }
            else
            {
                //Let the user know why
                await DisplayAlert("Permission needed", "I will need Camera permission for this action", "Ok");
                //Ask for the permission
                status = await Permissions.RequestAsync<Permissions.LocationWhenInUse>();
                if (status == PermissionStatus.Granted)
                {
                    //YES, now we have permission
                }
                else
                {
                    //Ok, maybe I will ask again
                }
            }
        }

推荐阅读