Xamarin.forms不显示android权限提示

时间:2017-01-04 22:02:21

标签: android xamarin xamarin.forms

我正在使用James Montemagno的permission plugin

我基本上复制了这个例子,但在请求它之后,权限是未知的。甚至没有对话显示。

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(new[] { Permission.Location });
                status = results[Permission.Location];
            }
            if (status == PermissionStatus.Granted)
            {
                //var results = await CrossGeolocator.Current.GetPositionAsync(10000);
                //LabelGeolocation.Text = "Lat: " + results.Latitude + " Long: " + results.Longitude;
            }
            else if (status != PermissionStatus.Unknown)
            {
                await DisplayAlert("Location Denied", "Can not continue, try again.", "OK");
            }
            Debug.WriteLine("Location permission: {0}", status);

我的Android清单中有权限。一旦我将目标平台更新为6.0+

,此问题才会开始显示

我还将此添加到我的MainActivity

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

这个问题不同,因为它与地图无关。我不能使用任何实时许可,因为提示不会在应用程序中显示。

2 个答案:

答案 0 :(得分:3)

有些MainApplication.cs没有与插件一起安装。它被放在正确的目录中,但我不得不手动将其添加到项目中。不确定为什么会这样,但你去了。

答案 1 :(得分:0)

在我的情况下,我的Android项目中未添加MainApplication.cs。我使用的更好方法是卸载CurrentActivity Plugin以及依赖它的所有NUgets。我再次安装CurrentActivity Plugin和所有其他插件。现在MainApplication.cs位于Android项目的根目录中。