瀏覽代碼

Merge branch 'master' of https://github.com/jbpin/react-native-permissions into jbpin-master

# Conflicts:
#	ReactNativePermissions.js
#	android/build.gradle
Yonah Forst 8 年之前
父節點
當前提交
29b16c2f90

+ 1 - 0
ReactNativePermissions.js

@@ -26,6 +26,7 @@ const RNPTypes = {
 		'event',
 		'event',
 		'photo',
 		'photo',
 		'storage'
 		'storage'
+		'notification',
 	]
 	]
 }
 }
 
 

+ 15 - 0
android/src/main/java/com/joshblour/reactnativepermissions/ReactNativePermissionsModule.java

@@ -5,6 +5,7 @@ import android.content.Intent;
 import android.net.Uri;
 import android.net.Uri;
 import android.provider.Settings;
 import android.provider.Settings;
 import android.support.v4.app.ActivityCompat;
 import android.support.v4.app.ActivityCompat;
+import android.support.v4.app.NotificationManagerCompat;
 import android.support.v4.content.ContextCompat;
 import android.support.v4.content.ContextCompat;
 import android.support.v4.content.PermissionChecker;
 import android.support.v4.content.PermissionChecker;
 
 
@@ -23,9 +24,11 @@ import java.util.Locale;
 public class ReactNativePermissionsModule extends ReactContextBaseJavaModule {
 public class ReactNativePermissionsModule extends ReactContextBaseJavaModule {
   private final ReactApplicationContext reactContext;
   private final ReactApplicationContext reactContext;
   private final PermissionsModule mPermissionsModule;
   private final PermissionsModule mPermissionsModule;
+  private final NotificationManagerCompat mNotificationManagerCompat;
 
 
   public enum RNType {
   public enum RNType {
     LOCATION,
     LOCATION,
+    NOTIFICATION,
     CAMERA,
     CAMERA,
     MICROPHONE,
     MICROPHONE,
     CONTACTS,
     CONTACTS,
@@ -38,6 +41,7 @@ public class ReactNativePermissionsModule extends ReactContextBaseJavaModule {
     super(reactContext);
     super(reactContext);
     this.reactContext = reactContext;
     this.reactContext = reactContext;
     mPermissionsModule = new PermissionsModule(this.reactContext);
     mPermissionsModule = new PermissionsModule(this.reactContext);
+    mNotificationManagerCompat = NotificationManagerCompat.from(this.reactContext);
   }
   }
 
 
   @Override
   @Override
@@ -55,6 +59,15 @@ public class ReactNativePermissionsModule extends ReactContextBaseJavaModule {
       return;
       return;
     }
     }
 
 
+    if(permission.equals("notification")) {
+      if (mNotificationManagerCompat.areNotificationsEnabled()) {
+        promise.resolve("authorized");
+      } else {
+        promise.resolve("denied");
+      }
+      return;
+    }
+
     int result = PermissionChecker.checkSelfPermission(this.reactContext, permission);
     int result = PermissionChecker.checkSelfPermission(this.reactContext, permission);
     switch (result) {
     switch (result) {
       case PermissionChecker.PERMISSION_DENIED:
       case PermissionChecker.PERMISSION_DENIED:
@@ -131,6 +144,8 @@ public class ReactNativePermissionsModule extends ReactContextBaseJavaModule {
       case STORAGE:
       case STORAGE:
       case PHOTO:
       case PHOTO:
         return Manifest.permission.READ_EXTERNAL_STORAGE;
         return Manifest.permission.READ_EXTERNAL_STORAGE;
+      case NOTIFICATION:
+        return permission;
       default:
       default:
         return null;
         return null;
     }
     }