Я установил следующий 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));
Эта строка ничего не возвращает.
Есть идеи, почему не получается?