gpt4 book ai didi

c# - 如何在启动画面上请求许可并在被拒绝时退出?

转载 作者:行者123 更新时间:2023-11-29 23:07:46 25 4
gpt4 key购买 nike

我正在尝试让我的 Xamarin.Android 应用程序在启动画面上请求许可,这是第一个启动的 Activity 。

我正在使用 permission plugin for Xamarin .我也在使用 async modal dialog implementation .

这里是启动画面 Activity 的权限相关代码:

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

private async Task<bool> RequestPermissionsAndTellIfWeShouldContinueAsync()
{
var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage);
if (status != PermissionStatus.Granted)
{
if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Storage))
{
await Utilities.MessageBox.Show(this, Resources.GetString(Resource.String.explain_external_storage_permission_title), Resources.GetString(Resource.String.explain_external_storage_permission_text), true);
}
var newStatus = await CrossPermissions.Current.RequestPermissionsAsync(new Permission[] { Permission.Storage });

var result = newStatus.Values.ElementAt(0);
if (result == PermissionStatus.Granted)
{
return true;
}
if (result == PermissionStatus.Denied)
{
await Utilities.MessageBox.Show(this, Resources.GetString(Resource.String.cant_continue_without_permission_title), Resources.GetString(Resource.String.cant_continue_without_permission_text), true);
return false;
}

return false;
}
else
return true;
}

接下来是尝试请求 OnResume 回调权限的代码

    protected override async void OnResume()
{
base.OnResume();

bool shallWeContinue = await RequestPermissionsAndTellIfWeShouldContinueAsync();

if ( shallWeContinue)
{
// Start Main activity

}
else
{
// End current activity and go back to android launcher
Finish();
}


}

只要我接受许可请求,它就可以正常工作。如果我拒绝两次,我的问题是我正在进入一个无限循环,显示最后一个消息框,解释现在应该在应用程序选项中手动授予权限。

最佳答案

这可能是因为每次在权限对话框消失后都会调用 onResume - 这是标准的 Android 行为。将 onResume 逻辑移至 onStartonCreate 方法以避免循环。

关于c# - 如何在启动画面上请求许可并在被拒绝时退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56355232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com