打電話時Permissions.RequestAsync<Permissions.LocationWhenInUse>()
我沒有得到任何結果,應用程式卡住了。無論如何,如果用戶接受或拒絕請求。
我已經MainActivity
按照檔案中的描述進行了設定:
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
現在我正在嘗試通過以下方式獲取權限。但是RequestAsync
電話只是卡住了,我從來沒有收到任何答復。一旦授予權限并重新啟動應用程式,一切都會按預期作業。
public async Task CheckPermissions()
{
var status = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>();
if (status != PermissionStatus.Granted)
{
status = await Permissions.RequestAsync<Permissions.LocationWhenInUse>();
}
if (status == PermissionStatus.Granted)
{
HasLocationPermissions = true;
}
else if (status != PermissionStatus.Unknown)
{
HasLocationPermissions = false;
}
}
uj5u.com熱心網友回復:
進一步向上呼叫堆疊的同步阻塞呼叫可能會導致這種情況;例如,.Wait()
、.Result
或.GetAwaiter().GetResult()
。這是我博客中描述的經典死鎖情況。
由于您正在撰寫 Xamarin 應用程式,因此您可能會發現此技術很有幫助 - 它是一種啟動異步操作(同步)、顯示“正在加載...”狀態,然后在異步操作完成時更新的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/507024.html
標籤:xamarin xamarin.forms xamarin.android 权限 xamarin.essentials