Я использую следующий код для запроса разрешений для FineLocation / CoarseLocation и камеры:
protected override void OnResume()
{
base.OnResume();
txt_TrashSubmitDescriptionTitle = FindViewById<TextView>(Resource.Id.txt_TrashSubmitDescriptionTitle);
var c = ContextCompat.CheckSelfPermission(this, Manifest.Permission.AccessFineLocation) == (int)Permission.Granted;
var y = ContextCompat.CheckSelfPermission(this, Manifest.Permission.AccessCoarseLocation) == (int)Permission.Granted;
var z = ContextCompat.CheckSelfPermission(this, Manifest.Permission.Camera) == (int)Permission.Granted;
if (c && y && z)
{
StartLocationService();
}
else
{
var requiredPermissions = new string[] { Manifest.Permission.AccessFineLocation, Manifest.Permission.AccessCoarseLocation, Manifest.Permission.Camera };
if (GeneralFunctions.CheckShouldShowRequestPermissionRationaleForPermissions(this, requiredPermissions))
{
// Provide an additional rationale to the user if the permission was not granted
// and the user would benefit from additional context for the use of the permission.
// For example if the user has previously denied the permission.
Snackbar.Make(txt_TrashSubmitDescriptionTitle,
Resource.String.permission_location_rationale,
Snackbar.LengthIndefinite)
.SetAction(Resource.String.ok, new Action<Android.Views.View>(delegate (Android.Views.View x) { ActivityCompat.RequestPermissions(this, requiredPermissions, 2); })).Show();
}
else
{
ActivityCompat.RequestPermissions(this, requiredPermissions, 2);
}
}
}
Эта функция проверяет, должен ли отображаться PermissionRadiale:
public static bool CheckShouldShowRequestPermissionRationaleForPermissions(Activity _activity, string[] requiredPermissions)
{
bool returnBool = false;
foreach(string _permission in requiredPermissions)
{
returnBool = ActivityCompat.ShouldShowRequestPermissionRationale(_activity, _permission);
}
return returnBool;
}
Функция OnResume продолжает вызываться снова и снова без конкретной ошибки, и я не знаю, почему.
Кто-то знает, почему OnResume продолжает вызываться?