/** * @param permissionsNames permissions as from {@link Activity#onRequestPermissionsResult(int, String[], int[])} * @param grantResults results as from {@link Activity#onRequestPermissionsResult(int, String[], int[])} * @throws IllegalArgumentException if permissionNames does not match this actor permissions, * unless user cancelled request as specified in * {@link Activity#onRequestPermissionsResult(int, String[], int[])} */ public void onRequestPermissionsResult(@NonNull String[] permissionsNames, @NonNull int[] grantResults) { checkReturningPermissionsNames(permissionsNames); Permission[] permissions = new Permission[requestedPermissionNames.length]; if (grantResults.length == requestedPermissionNames.length) { for (int i = 0; i < requestedPermissionNames.length; i++) { permissions[i] = Permission.fromPermissionResult(grantResults[i]); } } else { if (BuildConfig.DEBUG) Timber.i("User canceled permission request, permissions: %s, results: %s", Arrays.toString(permissions), Arrays.toString(grantResults)); for (int i = 0; i < requestedPermissionNames.length; i++) { permissions[i] = Permission.REQUEST_CANCELED; } } subject.onNext(permissions); }