c# - xamarin 表单的地理定位器插件
问题描述
我正在尝试使用 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;
}
解决方案
可能的解决方案
根据作者的文档,您需要为 Xamarin.Android 安装 Current Activity Plugin。并在您的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 提供的如何使用该插件中 的Geolocation的文档。
我也回答了一个类似的问题,您可能需要参考如何以 xamarin 形式获取设备的 gps 位置
推荐阅读
- javascript - 尝试发送 POST 请求时收到 404 错误
- python - 基于行和列位置更改数组值的 Python 非循环方式
- android - 从资源加载 VectorDrawable
- c# - 将一个类实例与另一个包含匹配值的类实例进行比较
- java - 如何将值从一个活动传递到另一个活动/适配器
- android - api 24 及更高版本的 RemoteViews 和 Picasso 问题
- javascript - 如何为 x 或 y 求解函数 f(x,y)(如果给出另一个)?
- ibm-cloud-infrastructure - 如何在安装后脚本中测试设备是裸机还是 VSI
- python - 从网站抓取数据到熊猫数据框
- google-analytics - Google Analytics:哪些域正在发送数据