55import android .net .Uri ;
66import android .provider .Settings ;
77import android .support .v4 .app .ActivityCompat ;
8+ import android .support .v4 .app .NotificationManagerCompat ;
89import android .support .v4 .content .ContextCompat ;
910import android .support .v4 .content .PermissionChecker ;
1011
2324public class ReactNativePermissionsModule extends ReactContextBaseJavaModule {
2425 private final ReactApplicationContext reactContext ;
2526 private final PermissionsModule mPermissionsModule ;
27+ private final NotificationManagerCompat mNotificationManagerCompat ;
2628
2729 public enum RNType {
2830 LOCATION ,
31+ NOTIFICATION ,
2932 CAMERA ,
3033 MICROPHONE ,
3134 CONTACTS ,
@@ -38,6 +41,7 @@ public ReactNativePermissionsModule(ReactApplicationContext reactContext) {
3841 super (reactContext );
3942 this .reactContext = reactContext ;
4043 mPermissionsModule = new PermissionsModule (this .reactContext );
44+ mNotificationManagerCompat = NotificationManagerCompat .from (this .reactContext );
4145 }
4246
4347 @ Override
@@ -55,6 +59,15 @@ public void getPermissionStatus(String permissionString, String nullForiOSCompat
5559 return ;
5660 }
5761
62+ if (permission .equals ("notification" )) {
63+ if (mNotificationManagerCompat .areNotificationsEnabled ()) {
64+ promise .resolve ("authorized" );
65+ } else {
66+ promise .resolve ("denied" );
67+ }
68+ return ;
69+ }
70+
5871 int result = PermissionChecker .checkSelfPermission (this .reactContext , permission );
5972 switch (result ) {
6073 case PermissionChecker .PERMISSION_DENIED :
@@ -131,6 +144,8 @@ private String permissionForString(String permission) {
131144 case STORAGE :
132145 case PHOTO :
133146 return Manifest .permission .READ_EXTERNAL_STORAGE ;
147+ case NOTIFICATION :
148+ return permission ;
134149 default :
135150 return null ;
136151 }
0 commit comments