我正在尝试使用Xamarin表单开发一个移动应用,并且该应用的一部分是获取用户的GPS位置。
但是当我运行该应用程序时,我会收到此异常消息
此组件的便携式版本中未实现此功能。您应该从主应用程序项目中引用NuGet包,以引用特定于平台的实现。
我试图找到一种解决方案,但没有用。有什么建议吗?
我将此权限添加到了android应用程序:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
try
{
var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 100;
var position = await locator.GetPositionAsync(TimeSpan.FromSeconds(20), null, true);
}
catch (Exception exception)
{
Debug.WriteLine(exception.Message);
// throw;
}
答案 0 :(得分:1)
根据author's documentations,您需要安装Current Activity Plugin for Xamarin.Android。并且在您的MainActivity.cs
中包含以下代码行。
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
// some code
CrossCurrentActivity.Current.Init(this, bundle);
LoadApplication(new App());
}
由于您的演示项目正在 .Net 4.5 上运行,因此无法尝试。您可以仔细阅读作者的文档,然后重试。
我查看了您正在使用的Github页面GeolocatorPlugin。作者指出:
现在是时候使用Xamarin.Essentials了,它在一个优化的软件包中提供了30多种跨平台的本机API。我与一个了不起的开发人员团队一起开发了这个新库,强烈建议您查看
因此,您应该改用 Xamarin.essentials 插件。 Microsoft提供的the documentation是如何使用该插件中的地理位置的。
我也回答了类似的问题,您可能需要参考how can I get gps location of my device in xamarin forms
答案 1 :(得分:1)
经过几次尝试,我通过使用其余的nuget软件包将xamarin.Forms更新为最新版本来解决了该问题。