diff --git a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java index ad01429f..a57b4627 100644 --- a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java +++ b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java @@ -55,9 +55,11 @@ import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableMap; import com.facebook.react.HeadlessJsTaskService; import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter; +import com.facebook.react.modules.permissions.PermissionsModule; import java.lang.reflect.Array; import java.util.ArrayList; @@ -253,13 +255,83 @@ public void checkPhoneAccountPermission(ReadableArray optionalPermissions, Promi optionalPermsArr[i] = optionalPermissions.getString(i); } - String[] allPermissions = Arrays.copyOf(permissions, permissions.length + optionalPermsArr.length); + final String[] allPermissions = Arrays.copyOf(permissions, permissions.length + optionalPermsArr.length); System.arraycopy(optionalPermsArr, 0, allPermissions, permissions.length, optionalPermsArr.length); hasPhoneAccountPromise = promise; if (!this.hasPermissions()) { - requestPermissions(currentActivity, allPermissions, REQUEST_READ_PHONE_STATE); + WritableArray allPermissionaw = Arguments.createArray(); + for (String allPermission : allPermissions) { + allPermissionaw.pushString(allPermission); + } + + getReactApplicationContext() + .getNativeModule(PermissionsModule.class) + .requestMultiplePermissions(allPermissionaw, new Promise() { + @Override + public void resolve(@Nullable Object value) { + WritableMap grantedPermission = (WritableMap) value; + int[] grantedResult = new int[allPermissions.length]; + for (int i=0; i