mirror of
https://github.com/status-im/react-native.git
synced 2025-02-27 00:20:31 +00:00
Allow code to check android permissions when run from a Service as well as Activity
Summary: This allows the React JS code that's running from a Service (ie GcmListenerService) to check permissions (ie check for VIBRATE permissions before delivering notifications) **Test plan (required)** I've run this code from a GcmListenerService subclass, and it works correctly. Closes https://github.com/facebook/react-native/pull/10229 Differential Revision: D3980853 fbshipit-source-id: 026b1f0c953d7093b5af2bec0b4a93ebd228f62e
This commit is contained in:
parent
ccea759b71
commit
1502e66c31
@ -10,6 +10,7 @@
|
||||
package com.facebook.react.modules.permissions;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Process;
|
||||
@ -49,13 +50,13 @@ public class PermissionsModule extends ReactContextBaseJavaModule implements Per
|
||||
*/
|
||||
@ReactMethod
|
||||
public void checkPermission(final String permission, final Promise promise) {
|
||||
PermissionAwareActivity activity = getPermissionAwareActivity();
|
||||
Context context = getReactApplicationContext().getBaseContext();
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
||||
promise.resolve(activity.checkPermission(permission, Process.myPid(), Process.myUid()) ==
|
||||
promise.resolve(context.checkPermission(permission, Process.myPid(), Process.myUid()) ==
|
||||
PackageManager.PERMISSION_GRANTED);
|
||||
return;
|
||||
}
|
||||
promise.resolve(activity.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED);
|
||||
promise.resolve(context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -83,13 +84,13 @@ public class PermissionsModule extends ReactContextBaseJavaModule implements Per
|
||||
*/
|
||||
@ReactMethod
|
||||
public void requestPermission(final String permission, final Promise promise) {
|
||||
PermissionAwareActivity activity = getPermissionAwareActivity();
|
||||
Context context = getReactApplicationContext().getBaseContext();
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
||||
promise.resolve(activity.checkPermission(permission, Process.myPid(), Process.myUid()) ==
|
||||
promise.resolve(context.checkPermission(permission, Process.myPid(), Process.myUid()) ==
|
||||
PackageManager.PERMISSION_GRANTED);
|
||||
return;
|
||||
}
|
||||
if (activity.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) {
|
||||
if (context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) {
|
||||
promise.resolve(true);
|
||||
return;
|
||||
}
|
||||
@ -102,6 +103,7 @@ public class PermissionsModule extends ReactContextBaseJavaModule implements Per
|
||||
}
|
||||
});
|
||||
|
||||
PermissionAwareActivity activity = getPermissionAwareActivity();
|
||||
activity.requestPermissions(new String[]{permission}, mRequestCode, this);
|
||||
mRequestCode++;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user