Permissions.Android.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. using InABox.Core;
  2. using Microsoft.Maui.ApplicationModel;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace InABox.Avalonia.Platform.Android;
  9. public class Android_Permissions : IPermissions
  10. {
  11. public Logger? Logger { get; set; }
  12. public async Task<bool> IsPermitted(Permission permission)
  13. {
  14. if (permission == Permission.Camera)
  15. return await DoEnabled<Permissions.Camera>();
  16. if (permission == Permission.PhotoLibrary || permission == Permission.VideoLibrary)
  17. return await DoEnabled<Permissions.Photos>();
  18. if (permission == Permission.Geolocation)
  19. return await DoEnabled<Permissions.LocationWhenInUse>();
  20. return false;
  21. }
  22. private async Task<bool> DoEnabled<TPermission>() where TPermission : Permissions.BasePlatformPermission, new()
  23. {
  24. var status = await Permissions.CheckStatusAsync<TPermission>();
  25. if (status != PermissionStatus.Granted && status != PermissionStatus.Restricted)
  26. status = await Permissions.RequestAsync<TPermission>();
  27. return status == PermissionStatus.Granted;
  28. }
  29. }