由于Android上的权限问题,我的应用正在终止

我正在编写此代码以获取gps位置,我在Android属性上标记了ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION,我还确认它是否在AndroidManifest.xml中,但应用程序正在终止:

10-08 19:52:50.048 I / mono-stdout(2905):目前没有位置权限,请求权限当前没有位置权限,请求权限

位置权限被拒绝,无法获取位置async.10-08 19:52:50.103我/ mono-stdout(2905):位置权限被拒绝,无法获取位置异步。

如果我转到配置>应用程序>权限并提供位置权限,它可以正常工作,但它不会在安装时请求权限。

代码:

using Plugin.Geolocator; using Plugin.Geolocator.Abstractions; using System; using Xamarin.Forms; namespace AppName { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } Position position; private async void GetPosition(object sender, EventArgs e) { try { var locator = CrossGeolocator.Current; locator.DesiredAccuracy = 50; position = await locator.GetPositionAsync(TimeSpan.FromSeconds(10)); } catch(Exception) { throw; } finally { LongitudeLabel.Text = string.Format("{0:0.0000000}", position.Longitude); LatitudeLabel.Text = string.Format("{0:0.0000000}", position.Latitude); } } } } 

谁能看到我做错了什么?

从Android Marshmallow开始,您需要从用户那里请求权限,以及在清单中标记它。 执行此操作将向用户显示一个提示,要求访问他们可以允许或拒绝的资源(在本例中为位置)。 您应该有适当的代码来处理这两种情况。

Xamarin提供了一些如何在此处执行此操作的文档。

编辑: Microsoft也提供较新的文档