Change Android Permission Module to use promises

Summary:
This is a follow-up to #9292 satya164
Closes https://github.com/facebook/react-native/pull/9325

Differential Revision: D3723568

fbshipit-source-id: d553a70bde53ed5d7c1f5f544c85c5c5935e3ca4
This commit is contained in:
Connor McEwen
2016-08-16 12:51:54 -07:00
committed by Facebook Github Bot 2
parent 7655e537ed
commit 6df41d5184
2 changed files with 30 additions and 72 deletions

View File

@@ -16,6 +16,7 @@ import android.os.Process;
import android.util.SparseArray;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
@@ -37,7 +38,7 @@ public class PermissionsModule extends ReactContextBaseJavaModule implements Per
@Override
public String getName() {
return "AndroidPermissions";
return "PermissionsAndroid";
}
/**
@@ -45,21 +46,14 @@ public class PermissionsModule extends ReactContextBaseJavaModule implements Per
* permission had been granted, false otherwise. See {@link Activity#checkSelfPermission}.
*/
@ReactMethod
public void checkPermission(
final String permission,
final Callback successCallback,
final Callback errorCallback) {
public void checkPermission(final String permission, final Promise promise) {
PermissionAwareActivity activity = getPermissionAwareActivity();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
successCallback.invoke(
permission,
activity.checkPermission(permission, Process.myPid(), Process.myUid()) ==
PackageManager.PERMISSION_GRANTED);
promise.resolve(activity.checkPermission(permission, Process.myPid(), Process.myUid()) ==
PackageManager.PERMISSION_GRANTED);
return;
}
successCallback.invoke(
permission,
activity.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED);
promise.resolve(activity.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED);
}
/**
@@ -71,17 +65,12 @@ public class PermissionsModule extends ReactContextBaseJavaModule implements Per
* See {@link Activity#shouldShowRequestPermissionRationale}.
*/
@ReactMethod
public void shouldShowRequestPermissionRationale(
final String permission,
final Callback successCallback,
final Callback errorCallback) {
public void shouldShowRequestPermissionRationale(final String permission, final Promise promise) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
successCallback.invoke(permission, false);
promise.resolve(false);
return;
}
successCallback.invoke(
permission,
getPermissionAwareActivity().shouldShowRequestPermissionRationale(permission));
promise.resolve(getPermissionAwareActivity().shouldShowRequestPermissionRationale(permission));
}
/**
@@ -91,20 +80,15 @@ public class PermissionsModule extends ReactContextBaseJavaModule implements Per
* See {@link Activity#checkSelfPermission}.
*/
@ReactMethod
public void requestPermission(
final String permission,
final Callback successCallback,
final Callback errorCallback) {
public void requestPermission(final String permission, final Promise promise) {
PermissionAwareActivity activity = getPermissionAwareActivity();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
successCallback.invoke(
permission,
activity.checkPermission(permission, Process.myPid(), Process.myUid()) ==
promise.resolve(activity.checkPermission(permission, Process.myPid(), Process.myUid()) ==
PackageManager.PERMISSION_GRANTED);
return;
}
if (activity.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) {
successCallback.invoke(permission, true);
promise.resolve(true);
return;
}
@@ -112,7 +96,7 @@ public class PermissionsModule extends ReactContextBaseJavaModule implements Per
mRequestCode, new Callback() {
@Override
public void invoke(Object... args) {
successCallback.invoke(permission, args[0].equals(PackageManager.PERMISSION_GRANTED));
promise.resolve(args[0].equals(PackageManager.PERMISSION_GRANTED));
}
});