Вы можете использовать Xamarin.Essentials.Platform.OnRequestPermissionsResult
для запроса разрешений. Добавьте его в методе OnRequestPermissionsResult
.
[Activity(Label = "IssuesApp", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
Если вы используете CrossMedia
Вы должны получить разрешения StorageWrite
и Camera
. Вы можете создать класс PermissionUtils
для его обработки.
public static class PermissionUtils
{
public static async Task<bool> GetPermission<TPermission>() where TPermission : BasePermission, new()
{
var hasPermission = await Permissions.CheckStatusAsync<TPermission>();
if (hasPermission == PermissionStatus.Granted)
return true;
else if (hasPermission == PermissionStatus.Disabled)
return false;
var result = await Permissions.RequestAsync<TPermission>();
if (result != PermissionStatus.Granted)
return false;
return true;
}
}
Перед тем, как сделать фотографию, вы должны проверить разрешение, если вы получите оба из них, вы должны запросить его как следующий код.
if (!await PermissionUtils.GetPermission<Permissions.Camera>())
{
return "You do not have this permission";
}
Здесь работает GIF.
Вот мое демо, вы можете скачать его и протестировать в своем android 10 эмулятор.
https://github.com/851265601/XFormsCrossMediaPermission