gpt4 book ai didi

c# - 如何使用 xamarin 表单提示用户进行地理定位

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:25 26 4
gpt4 key购买 nike

我正在 xamarin forms 应用程序中开发一个应用程序,它需要请求地理定位权限,如果获得授权,它需要从设备获取地理定位数据,然后将地理定位坐标放入 forecast.io URL 我正在使用 Geolocator James Montemagno 的插件以及 James Montemagno 的 PermissionsPlugin 当我打开雷达页面时,屏幕保持白色,它从不征求我的许可这是我的 xamarin 表单代码:

using AppName.Data;
using Xamarin.Forms;
using Plugin.Geolocator;
using System.Diagnostics;
using System.Threading.Tasks;
using Plugin.Permissions;
using Plugin.Permissions.Abstractions;
using System;

namespace AppName.Radar
{
public partial class RadarHome : ContentPage
{
public RadarHome()
{
InitializeComponent();
}

async void locator()
{
try
{
var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location);
if (status != PermissionStatus.Granted)
{
if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Location))
{
await DisplayAlert("Need location", "Gunna need that location", "OK");
}

var results = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Location);
status = results[Permission.Location];
}

if (status == PermissionStatus.Granted)
{
var browser = new WebView();
var results = await CrossGeolocator.Current.GetPositionAsync(10000);
browser.Source = "https://forecast.io/?mobile=1#/f/" + "Lat: " + results.Latitude + " Long: " + results.Longitude;
}
else if (status != PermissionStatus.Unknown)
{
await DisplayAlert("Location Denied", "Can not continue, try again.", "OK");
}
}
catch (Exception ex)
{
await DisplayAlert("Location Denied", "Can not continue, try again.", "OK");
}
}
}
}

这是我的 Android MainActivity 代码:

using Android.App;
using Android.Content.PM;
using Android.OS;
using Xamarin.Forms.Platform.Android;
using Android;
using Plugin.Permissions;

namespace AppName.Droid
{
[Activity(MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, Theme = "@style/CustomTheme")]

public class MainActivity : FormsApplicationActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);

global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
}

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}

我是不是遗漏了什么?这两个插件都安装在表单项目android项目和iOS项目中

最佳答案

您需要添加所需的权限。

Android 中,为了允许我们的应用程序访问位置服务,我们需要启用两个 Android 权限:ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION

iOS 中,根据您是始终使用地理定位(例如 map 应用),还是仅在用户工作流程中的某些点使用,您需要添加 key NSLocationWhenInUsageDescriptionNSLocationAlwaysUsageDescription 中的 Info.plist ,以及一个新的 key 字符串条目,该条目准确描述了您将对用户位置执行的操作。在运行时向用户提示权限时,将显示此处列出的描述。

在 Windows 中,必须启用 ID_CAP_LOCATION 权限。

在这里阅读完整的博客 - Geolocation for iOS, Android, and Windows Made Easy

关于c# - 如何使用 xamarin 表单提示用户进行地理定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39210048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com