我的应用由于Android上的权限问题而终止

时间:2018-10-08 20:08:18

标签: c# android xamarin android-manifest

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

  

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

     

位置权限被拒绝,无法获取位置异步。10-08 19:52:50.103 I / 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);
            }
        }
    }
}

任何人都可以看到我在做什么吗?

1 个答案:

答案 0 :(得分:0)

从Android Marshmallow开始,您需要同时向用户请求权限以及在清单中标记权限。这样做将向用户显示提示,要求他们访问他们可以允许或拒绝的资源(在这种情况下为位置)。您应该有适当的代码来处理这两种情况。

Xamarin提供了有关如何here的一些文档。

编辑:Microsoft

也提供了更新的文档