我们正在构建一个多平台(桌面 - 和平板电脑的电脑)应用针对Windows 8.1以及10.我们处理空间数据,我们为用户提供可以使用设备的GPS接收器使用他当前的位置。为了方便适应(硬件)环境,我们将gps逻辑(包括API调用)放入基于配置加载的外部程序集中。在Windows上使用UWP地理位置-API与Win32的应用程序10
最近我们发现了一些问题,使用Windows 10中的Windows.Devices.Geolocation-API下的Geolocator(但以前在Windows 8.1上没有问题的情况下运行)的gps-module的问题,没有提供任何位置。进一步的调查和RTFM显示, - 在Windows 10下 - 我们被迫在调用位置之前调用RequestAccessAsync。
由于RequestAcessAsync-方法不可用在Windows 8.1,我们决定创建一个新的组件,针对Windows 10(再轻易被绑定/通过我们的配置中使用),什么工作得很好:
public Win10GpsProvider()
{
RequestAccessAsync();
}
public async void RequestAccessAsnyc()
{
//next line causes exception:
var request = await Geolocator.RequestAccessAsync();
switch (request)
{
// we don't even get here... :(
}
}
最多只运行到该被尽快RequestAccessAsync-方法被调用(在UI线程)抛出一个异常,指出该呼叫在一个应用程序容器的背景下进行。
该操作仅在一个应用程序容器的上下文中有效。 (来自HRESULT的例外:0x8007109A)
在台式机和平板电脑上均发生异常(通过远程调试进行验证)。
搜索多一点,增加了“位置”的要求的能力的package.appxmanifest可能会有帮助:
<Capabilities>
<Capability Name="location"/>
</Capabilities>
这就是我们实际上是停留在此刻:
- 我们没有一个UWP-应用程序(其实不想/可以改变,因为我们瞄准赢8.1以及和具有包括设置规定展开工作流程)
- 我们不能得到的装配运行无一例外,因为没有UWP a PP /背景
有没有办法让一个单独的程序为目标的的Windows 10版本的Windows.Devices.Geolocation-API的可以称得上/由Win32的应用程序加载?