Мое приложение закрывается из-за проблемы с разрешением на Android - PullRequest
0 голосов
/ 08 октября 2018

Я пишу этот код для получения местоположения GPS, я отметил ACCESS_COARSE_LOCATION и ACCESS_FINE_LOCATION на свойствах Android, и я также подтвердил, что он был в 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 голосов
/ 08 октября 2018

Начиная с Android Marshmallow, вам необходимо запрашивать разрешения у пользователя, а также отмечать его в манифесте.Это покажет пользователю запрос на доступ к ресурсу (местоположение в данном случае), который он может разрешить или запретить.У вас должен быть код для обработки обеих ситуаций.

Xamarin предоставляет некоторую документацию о том, как это сделать здесь .

РЕДАКТИРОВАТЬ: более новая документация также доступна от Microsoft

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...