我已经安装了以下nuget:
我有以下课程:
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 =“ 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://developers.google.com/maps/documentation/android-sdk/signup?hl=en(适用于Android的Maps SDK)获得api密钥
我的Xamarin表单的版本是3.1.0.697729
我创建的另一个项目为空,而android上的位置仍然无法正常工作。
在iOS中,我没有问题。该位置正在工作。
我读了https://jamesmontemagno.github.io/GeolocatorPlugin/GettingStarted.html。
当我运行该应用程序并且下一行代码尝试执行该方法时,它不再执行该方法的以下几行。该应用程序可以运行,但不会跳过任何异常。
await CrossGeolocator.Current.GetPositionAsync(TimeSpan.FromSeconds(10));
此行不返回任何内容。
知道为什么会失败吗?