mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-10 22:47:58 +08:00
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:
committed by
Facebook Github Bot 2
parent
7655e537ed
commit
6df41d5184
@@ -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));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user