【问题标题】:Location Permissions on Xamarin.FormsXamarin.Forms 上的位置权限
【发布时间】:2017-07-22 15:23:11
【问题描述】:

我无法在任何地方找到解决此问题的方法, 在 android 上,请求权限不起作用我使用 James Montemagno 的 PermissionsPlugin 示例:

await Application.Current?.MainPage?.DisplayAlert("Need location", "Gunna need that location", "OK");

而且无论如何我总是将位置权限设置为授予, 但是当我关闭设备上的位置时:带有 Kitkat 的 Galaxy s4。 一直被取消权限请求任务,不知道怎么办,请大家帮忙。

var resultrs = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Location });

【问题讨论】:

  • 你在棉花糖下面不需要运行时权限

标签: android xamarin permissions xamarin.forms location


【解决方案1】:

您遇到的错误与您不需要向 Marshmallow Api 下面的用户请求许可的权限无关,这是您的情况。由于您正在 kiKat 上进行测试。您可以使用Xamarin.Essential 的Geolocator 类 并检测Gps 是否处于活动状态/如果没有将用户发送到移动设置页面或提示用户在继续之前启用您的Gps。

【讨论】:

    【解决方案2】:

    将以下内容添加到 Android 项目中的 AssemblyInfo.cs 文件中:

    [assembly: UsesFeature("android.hardware.location", Required = false or true)]
    [assembly: UsesFeature("android.hardware.location.gps", Required = false or true)]
    [assembly: UsesFeature("android.hardware.location.network", Required = false or true)]
    

    并将 OnRequestPermissionsResult 放入 MainActivity.cs

    [Activity(Label = "JobTimer.Android", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;
    
            base.OnCreate(bundle);
            this.Window.AddFlags(WindowManagerFlags.Fullscreen);
    
            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);
        }
    }
    

    【讨论】:

    • 谢谢,但我已经这样做了,但它不起作用,var perm = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Location; 我正在使用上面的代码来请求权限,但它甚至没有请求任何我不明白的东西。
    【解决方案3】:

    使用自动 API 25 制作目标平台以覆盖您的 xamarin android 项目的 API 25。

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 2022-06-13
      • 2017-01-26
      • 2014-02-16
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多