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

My app is terminating due to permission issue on Android

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

10-08 19:52:50.048 I/mono-stdout( 2905): Currently does not have Location permissions, requesting permissionsCurrently does not have Location permissions, requesting permissions

Location permission denied, can not get positions async.10-08 19:52:50.103 I/mono-stdout( 2905): Location permission denied, can not get positions async.

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

代码:

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 提供了一些有关如何执行此操作的文档here

编辑:更新的文档也可从 Microsoft

获得