xamarin - Xamarin 表单中运行时的相机和位置权限
问题描述
我创建了一个 Xamarin 表单应用程序,它需要两个权限,即 i)Location 和 ii)Camera。
我需要在运行时获得这两种权限,但不幸的是,当应用程序启动时,我一次只能获得一种权限。
是否有任何解决方案可以在运行时同时请求这两个权限。
解决方案
最好不要在应用程序启动时请求权限,因为用户可能不知道它的用途。
还需要检查并在需要时请求许可。例如,在打开相机之前请求相机许可。
您可以使用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
}
}
}
推荐阅读
- angularjs - angularjs html组件配置
- asp.net-mvc - 如何在asp.net的square-connect支付网关中使用订单ID
- spring-boot - 从不同的微服务读取相同的缓存
- angular - 如何从组件执行功能(
- google-api - 有没有办法使用 Google Drive API 下载大于 10MB 的文档?
- node.js - 使用nodejs在firebase中列出GCP Bucket对象
- java - 春季时区问题中的 DateTimeFormat 注释
- php - Codeigniter:如何更改结果数组
- python - 从列表中删除以某些表达式开头的字符串
- c++ - vkCmdCopyBuffer 对暂存缓冲区的传输没有影响