xamarin / Essentials

Xamarin.Essentials is no longer supported. Migrate your apps to .NET MAUI, which includes Maui.Essentials.
https://aka.ms/xamarin-upgrade
Other
1.53k stars 506 forks source link

Unable to Grant ScheduleExactAlarm permission. #2127

Open munkii opened 5 months ago

munkii commented 5 months ago

Description

Android 12 introduced the ScheduleExactAlarm permission and to get access that to that in Andorid 12,13 and 14 I have written a custom Permission as per the "extending" docs.

   public interface IScheduleExactNotificationPermission
   {
       Task<PermissionStatus> CheckStatusAsync();

       Task<PermissionStatus> RequestAsync();
   }

With an implementation in Android of

public class ScheduleExactNotificationPermission : BasePlatformPermission, IScheduleExactNotificationPermission
{
  public override (string androidPermission, bool isRuntime)[] RequiredPermissions => new List<(string androidPermission, bool isRuntime)>
  {
      (Android.Manifest.Permission.ScheduleExactAlarm, true),
  }.ToArray();
}

AssemblyInfo.cs in Adroid target has these two permission declarations

[assembly: UsesPermission(Android.Manifest.Permission.ScheduleExactAlarm)]
[assembly: UsesPermission(Android.Manifest.Permission.UseExactAlarm)]

Steps to Reproduce

  1. In our common code I call it like this,
var status = await this.scheduleExactNotificationPermission.CheckStatusAsync();
if (status != PermissionStatus.Granted)
{
    status = await this.scheduleExactNotificationPermission.RequestAsync();
}
  1. In Android 12 status is Granted, Android 13 Granted but in Android 14 status is Denied after the call to RequestAccess. As I understand it the permission only had to be requested from Android 14 onwards.

Expected Behavior

An OS Dialog that allows me as a user to Grant permission

Actual Behavior

Nothing other than an immediate call back into OnRequestPermissionsResult with the following args requestCode 12001 permissions android.permission.SCHEDULE_EXACT_ALARM grantResults -1

This happens on a fresh install too so is not simply becvause it has been asked many times before and denied

Basic Information

Screenshots

Reproduction Link