Bro*_*oky 5 android xamarin.forms xamarin.essentials
我目前正在使用最新版本的 Xamarin.Forms (4.5.0.617) 和 Xamarin.Essentials (1.5.2)。
我有一个依赖项注入服务,负责访问电话联系人,它实际上是 Xamarin.Essentials 权限代码的包装器。我需要保证代码在UI线程上执行以避免异常。我已经得到了下面的代码,但是,它没有按我的预期工作。在我的应用程序中,出现权限弹出窗口并为我提供允许/拒绝的选择,但是 RequestAsync 之后的所有代码都无法执行,就像响应从未正式返回一样。下次我运行该应用程序时,它会立即运行(因此大概后台的权限已被正确记录)。
public async Task<bool> RequestAccessPhoneContacts()
{
PermissionStatus status = PermissionStatus.Denied;
status = await MainThread.InvokeOnMainThreadAsync<PermissionStatus>(async () =>
{
return await Permissions.RequestAsync<Permissions.ContactsRead>();
});
return (status == PermissionStatus.Granted);
}
Run Code Online (Sandbox Code Playgroud)
我不确定我尝试将代码强制到 UI 线程的方式是否引起了问题,或者我是否错误地使用了异步代码......或者(最有可能)这是否是一个错误Xamarin.Essentials 权限代码。目前我只在 Android 上看到过这种行为,但还没有在其他任何设备上进行过测试。
非常感谢任何帮助:)
谢谢!
事实证明我在设置时没有正确遵循文档。
将其添加到我的主要活动中后,一切都恢复了生机。
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
Run Code Online (Sandbox Code Playgroud)
此信息来自我在 Xamarin.Essentials github 上提出的错误 - https://github.com/xamarin/Essentials/issues/1227
| 归档时间: |
|
| 查看次数: |
4013 次 |
| 最近记录: |