我正在使用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);
}
这个问题不同,因为它与地图无关。我不能使用任何实时许可,因为提示不会在应用程序中显示。
答案 0 :(得分:3)
有些MainApplication.cs没有与插件一起安装。它被放在正确的目录中,但我不得不手动将其添加到项目中。不确定为什么会这样,但你去了。
答案 1 :(得分:0)
在我的情况下,我的Android项目中未添加MainApplication.cs
。我使用的更好方法是卸载CurrentActivity Plugin
以及依赖它的所有NUgets
。我再次安装CurrentActivity Plugin
和所有其他插件。现在MainApplication.cs
位于Android项目的根目录中。