Xamarin Plugin Geolocator не работает на Xamarin Forms для Android - PullRequest
0 голосов
/ 24 августа 2018

Я установил следующий nuget:

  • Версия Xamarin.Forms.Maps => 3.1.0.697729
  • Plugin.CurrentActivity => 2.1.0.4
  • Xam.Plugin.Geolocator => 4.5.0.6
  • Plugin.Permissions => 3.0.0.12

У меня есть следующий класс:

    public class MainApplication : Application
    {
         public MainApplication(IntPtr handle, JniHandleOwnershiptranser): base(handle, transer)
         {
         }

         public override void OnCreate()
         {
               base.OnCreate();
               CrossCurrentActivity.Current.Init(this);
         }
    }

У меня естькод в моем классе MainActivity:

    protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(bundle);

        Forms.Init(this, bundle);
        FormsMaps.Init(this, bundle);

        LoadApplication(new App());
    }

    public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
    {
        PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }

манифест Android

<application android:label="MyApp.Android" android:icon="@drawable/icon">
    <meta-data android:name="com.google.android.maps.v2.API_KEY " android:value="AIza..." />
    <provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true">
        <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
    </provider>
</application>

манифест Android - разрешение

  • <разрешение использования android: name = "android.permission.ACCESS_FINE_LOCATION "/>
  • <разрешение использования android: name =" android.permission.ACCESS_COARSE_LOCATION "/>
  • <разрешение использования android: name =" android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
  • <использование-разрешения android: name =" android.permission.ACCESS_MOCK_LOCATION "/>
  • <использование-разрешения android: name =" android.permission.ACCESS_NETWORK_STATE "/>
  • <использование-разрешения android: name = "android.permission.ACCESS_WIFI_STATE" />
  • <использование-permission android: name = "android.permission.INTERNET" />

Я пытаюсь использовать метаданные android: name = "com.google.android.geo.API_KEY" вместо мета-данные android: name = "com.google.android.maps.v2.API_KEY"

Также добавьте эту строку ниже

У меня есть один вид, где у меня есть моя карта:

<ContentPage.Content>
    <maps:Map x:Name="Map" />
</ContentPage.Content>

и код позади:

    private async Task LoadMap()
    {
        if (await Utils.Utils.CheckPermissions(Permission.Location))
        {
            var currentLocation = await CrossGeolocator.Current.GetPositionAsync(TimeSpan.FromSeconds(10));

            // MORE CODE
        }

    }

И я использую этот класс https://github.com/jamesmontemagno/PermissionsPlugin/blob/master/samples/PermissionsSample/PermissionsSample/Utils.cs для запроса разрешения

Я получаю здесь ключ API https://developers.google.com/maps/documentation/android-sdk/signup?hl=en (Maps SDK для Android)

Версия моих форм Xamarin: 3.1.0.697729

Я создал другой проект пустым, а местоположение на Android все еще не работает.

В iOS у меня нет проблем.Расположение работает.

Я прочитал это, https://jamesmontemagno.github.io/GeolocatorPlugin/GettingStarted.html.

Когда я запускаю приложение и следующая строка кода пытается выполнить метод, оно больше не выполняет следующие строкиМетод работает. Приложение работает, но не пропускает никаких исключений.

   await CrossGeolocator.Current.GetPositionAsync(TimeSpan.FromSeconds(10));

Эта строка ничего не возвращает.

Есть идеи, почему не получается?

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