1
- using Android . App ;
1
+ using Android ;
2
+ using Android . App ;
2
3
using Android . Content ;
4
+ using Android . Content . PM ;
3
5
using Android . Media ;
4
6
using Android . OS ;
7
+ using AndroidX . Core . App ;
8
+ using AndroidX . Core . Content ;
5
9
using Microsoft . Extensions . Logging ;
6
10
#if ANDROID
7
11
using Microsoft . Maui . ApplicationModel ;
10
14
using Plugin . LocalNotification . EventArgs ;
11
15
using Plugin . LocalNotification . Platforms ;
12
16
using System ;
17
+ using System . Diagnostics ;
13
18
using System . IO ;
14
19
using System . Runtime . CompilerServices ;
15
20
using System . Threading . Tasks ;
@@ -19,19 +24,18 @@ namespace Plugin.LocalNotification
19
24
public partial class LocalNotificationCenter
20
25
{
21
26
/// <summary>
22
- /// Not available for Xamarin.Forms please use Xamarin.Essentials.Permissions.RequestAsync
27
+ ///
23
28
/// </summary>
24
29
/// <returns></returns>
25
30
public static async Task < bool > RequestNotificationPermissionAsync ( NotificationPermission permission = null )
26
31
{
32
+ permission ??= new NotificationPermission ( ) ;
27
33
#if ANDROID
28
34
if ( ! OperatingSystem . IsAndroidVersionAtLeast ( 33 ) )
29
35
{
30
36
return false ;
31
37
}
32
38
33
- permission ??= new NotificationPermission ( ) ;
34
-
35
39
if ( ! permission . AskPermission )
36
40
{
37
41
return false ;
@@ -40,11 +44,29 @@ public static async Task<bool> RequestNotificationPermissionAsync(NotificationPe
40
44
var status = await Permissions . RequestAsync < NotificationPerms > ( ) ;
41
45
return status == PermissionStatus . Granted ;
42
46
#else
43
- var result = await Task . FromResult ( true ) ;
44
- return result ;
47
+ if ( ! permission . AskPermission )
48
+ {
49
+ return await Task . FromResult ( false ) ;
50
+ }
51
+
52
+ if ( ( int ) Build . VERSION . SdkInt >= 33 )
53
+ {
54
+ var permissionName = "android.permission.POST_NOTIFICATIONS" ;
55
+
56
+ if ( Application . Context . CheckSelfPermission ( permissionName ) != Permission . Granted )
57
+ {
58
+ ActivityCompat . RequestPermissions ( MainActivity , new [ ] { permissionName } , 0 ) ;
59
+ }
60
+ }
61
+ return await Task . FromResult ( true ) ;
45
62
#endif
46
63
}
47
64
65
+ /// <summary>
66
+ ///
67
+ /// </summary>
68
+ public static Android . App . Activity MainActivity { get ; set ; }
69
+
48
70
/// <summary>
49
71
/// Notify Local Notification Tapped.
50
72
/// </summary>
0 commit comments