当前位置: 首页 > 知识库问答 >
问题:

我如何在Xamarin表格中获得我的设备的GPS位置?

尹光辉
2023-03-14

当名为entLocation的条目框聚焦时,我想获取我的设备的经纬度。我正在使用Xamarin.Essential Geolocation来获取我的设备的GPS位置我遵循了文档和教程,但我仍然无法获得GPS位置。我已经在下面添加了我的android清单的权限,仍然什么都没有。我在“Error3”上得到一个显示警报,Error3是无法获得位置时的例外。

错误是“java.lang.NullPointerException:尝试对空对象引用调用虚拟方法'void Android.app.activity.RequestPermissions(java.lang.String[],int)‘”



我的问题:
1。代码中的错误是什么?
2。我可以离线获取我的gps位置吗?如果是,我如何做到这一点?

use-permission Android:name=“Android.permission.access_coarse_location”
use-permission Android:name=“Android.permission.access_fine_location”
use-permission Android:name=“Android.permission.access_fine_location”
use-feature Android:name=“Android.hardware.location”Android:required=“false”Android:required=“false”
use-feature

private async void entLocation_FocusedAsync(object sender, FocusEventArgs e)
    {
        try
        {
            var request = new GeolocationRequest(GeolocationAccuracy.Medium);
            var location = await Geolocation.GetLocationAsync(request);

            if (location != null)
            {
                entLocation.Text = location.Longitude.ToString() + "," + location.Latitude.ToString();
            }
        }
        catch (FeatureNotSupportedException fnsEx)
        {
            await DisplayAlert("Error1", fnsEx.ToString(), "ok");
        }
        catch (PermissionException pEx)
        {
            await DisplayAlert("Error2", pEx.ToString(), "ok");
        }
        catch (Exception ex)
        {
            await DisplayAlert("Error3", ex.ToString(), "ok");
        }
    }

共有1个答案

万俟华辉
2023-03-14

我还在进行我的第一个Xamarin项目,该项目需要位置权限。你应该尝试几件事,可能会帮助你获得GPS定位。

1)您需要在AndroidManifest文件中授予其他权限。这些权限是

xml prettyprint-override"><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

2)从Android6.0或更高版本开始,您需要具有运行时权限。要实现这一点,您需要在mainactivity.cs中重写onstart()方法。我用xamarin.forms.maps引用了Android6.0以上版本的位置权限。以下是我所做的

protected override void OnStart()
{
    base.OnStart();
    if(CheckSelfPermission(Manifest.Permission.AccessCoarseLocation) != (int)Permission.Granted)
    {
        RequestPermissions(new string[] { Manifest.Permission.AccessCoarseLocation, Manifest.Permission.AccessFineLocation }, 0);
    }

}
 类似资料:
  • 我正在为android应用程序开发一个Flutter模块,该模块使用Geolocatore获取设备的当前位置。但当flutter模块初始化时,我得到了以下错误: location_permissions:无法检测当前activity 我已经将这两行添加到AndroidManifest文件中(用于Android应用程序和flutter模块2) 我使用这个函数来获取当前位置

  • 我有一个应用程序,显示GPS经度和纬度。如果我使用locationmanager.network_provider,它就可以工作,它会显示网络的经度和纬度。但是当我使用locationmanager.gps_provider时,它不会显示任何内容。但当我使用谷歌地图时,它可以指出我在哪里。谷歌地图做什么来获取我的位置?我需要得到我的设备的经纬度。 这是我的代码 我的清单文件

  • 问题内容: 我正在开发一个具有基于Flex的前端和Spring / Hibernate后端的应用程序。 要使Facebook集成以目前的方式运行,我需要阅读后端前端javascript中设置的cookie,并在登录期间进行一些验证以查看用户是否试图欺骗其Facebook。登录。 这将非常容易,但是我不知道如何获取HttpServletRequest。我正在使用一个非常基本的Spring配置(这是我

  • 由于室内GPS信号较弱,我在android应用程序中无法通过室内GPS访问当前位置。但是谷歌地图在Android系统中访问当前位置非常好,在室内使用GPS。我应该做什么才能在室内使用android中的GPS访问我当前的位置?

  • 问题内容: 如何在Swift中获取设备的唯一ID? 我需要一个ID才能在数据库中使用,并作为我的社交应用程序中Web服务的API密钥。可以跟踪该设备日常使用并将其查询限制在数据库中的东西。 谢谢! 问题答案: 您可以使用此(快速3): 对于旧版本: 或者如果您想要一个字符串: 用户卸载应用后,不再有一种唯一标识设备的方法。该文档说: 当该应用程序(或同一供应商的另一个应用程序)安装在iOS设备上时

  • 问题内容: 干杯,我正在尝试通过Android获取当前的GPS位置。我也遵循了这篇教程和Vogellas的文章。虽然没有用。使用LocationManager.NETWORK_PROVIDER时,无论我站在哪里,我总能得到51的纬度和9的经度。当使用LocationManager.GPS_PROVIDER时,我什么也没得到。 虽然使用GMaps时一切正常::S不知道为什么。如何像GMaps一样获取