我正在尝试在Windows应用商店应用中使用位置功能。我已经在XAML页面中放置了Bing Maps控件。
在我正在尝试使用以下代码获取当前位置的代码中:
private async Task SetMyLocation()
{
var position = await this.GetCurrentPosition();
if (position != null)
this.DataContext = position;
this.myLocation = new Location(position.Latitude, position.Longitude);
this.myMap.Center = this.myLocation;
}
并且。 。
private async Task<Position> GetCurrentPosition()
{
try
{
Geolocator geolocator = new Geolocator();
geolocator.DesiredAccuracy = PositionAccuracy.High;
geolocator.MovementThreshold = 0;
Geoposition location = await geolocator.GetGeopositionAsync();
var postion = new Position
{
Latitude = location.Coordinate.Latitude,
Longitude = location.Coordinate.Longitude
};
return postion;
}
catch (Exception ex)
{
. . .
}
当用户单击应用程序中的按钮时,上面的所有代码都在执行。然后在执行GetCurrentPosition()方法并进行操作以执行以下代码行时:
Geoposition location = await geolocator.GetGeopositionAsync();
我收到一条弹出消息,询问用户是否允许使用位置功能。</ p>
所以,问题是:是否有人在开始时问同样的事情?我的意思是,当应用程序启动时?
提前感谢您的帮助
问候!
答案 0 :(得分:4)
您看到的弹出窗口无法以编程方式调用。它会在调用GetGeopositionAsync
时自动显示。如果应用已定义网络摄像头功能,则可以看到相同的对话框。只有在调用照片捕获方法时才会出现类似的对话框,您不能提前获得特定权限的“是”或“否”。
您可以做的是,在特定页面的SetMyLocation()
中调用OnNavigatedTo(...)
方法,而不是在按钮点击事件中。
此外,您可以通过代码设置权限。它完全取决于用户。用户可以允许/阻止设置魅力的权限 - &gt;权限标签。
答案 1 :(得分:1)
您可以创建MessageDialog
对象。类似的东西:
MessageDialog dialog = new MessageDialog("Do you want to allow XXXX to use your location?");
dialog.Commands.Add(new UICommand("Yes"));
dialog.Commands.Add(new UICommand("No"));
var result = await dialog.ShowAsync();
if(result.Label == "Yes")
App.UseLocation = true; // Where UseLocation is a static property in your app somewhere
希望这有助于编码!