@Implementation(minSdk = KITKAT) protected void takePersistableUriPermission(@NonNull Uri uri, int modeFlags) { Objects.requireNonNull(uri, "uri may not be null"); modeFlags &= (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); // If neither read nor write permission is specified there is nothing to do. if (modeFlags == 0) { return; } // Attempt to locate an existing record for the uri. for (Iterator<UriPermission> i = uriPermissions.iterator(); i.hasNext(); ) { UriPermission perm = i.next(); if (uri.equals(perm.getUri())) { if (perm.isReadPermission()) { modeFlags |= Intent.FLAG_GRANT_READ_URI_PERMISSION; } if (perm.isWritePermission()) { modeFlags |= Intent.FLAG_GRANT_WRITE_URI_PERMISSION; } i.remove(); break; } } addUriPermission(uri, modeFlags); }
@Implementation(minSdk = KITKAT) protected void releasePersistableUriPermission(@NonNull Uri uri, int modeFlags) { Objects.requireNonNull(uri, "uri may not be null"); modeFlags &= (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); // If neither read nor write permission is specified there is nothing to do. if (modeFlags == 0) { return; } // Attempt to locate an existing record for the uri. for (Iterator<UriPermission> i = uriPermissions.iterator(); i.hasNext(); ) { UriPermission perm = i.next(); if (uri.equals(perm.getUri())) { // Reconstruct the current mode flags. int oldModeFlags = (perm.isReadPermission() ? Intent.FLAG_GRANT_READ_URI_PERMISSION : 0) | (perm.isWritePermission() ? Intent.FLAG_GRANT_WRITE_URI_PERMISSION : 0); // Apply the requested permission change. int newModeFlags = oldModeFlags & ~modeFlags; // Update the permission record if a change occurred. if (newModeFlags != oldModeFlags) { i.remove(); if (newModeFlags != 0) { addUriPermission(uri, newModeFlags); } } break; } } }
@Implementation(minSdk = KITKAT) protected void takePersistableUriPermission(@NonNull Uri uri, int modeFlags) { Objects.requireNonNull(uri, "uri may not be null"); modeFlags &= (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); // If neither read nor write permission is specified there is nothing to do. if (modeFlags == 0) { return; } // Attempt to locate an existing record for the uri. for (Iterator<UriPermission> i = uriPermissions.iterator(); i.hasNext(); ) { UriPermission perm = i.next(); if (uri.equals(perm.getUri())) { if (perm.isReadPermission()) { modeFlags |= Intent.FLAG_GRANT_READ_URI_PERMISSION; } if (perm.isWritePermission()) { modeFlags |= Intent.FLAG_GRANT_WRITE_URI_PERMISSION; } i.remove(); break; } } addUriPermission(uri, modeFlags); }
@Implementation(minSdk = KITKAT) protected void releasePersistableUriPermission(@NonNull Uri uri, int modeFlags) { Objects.requireNonNull(uri, "uri may not be null"); modeFlags &= (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); // If neither read nor write permission is specified there is nothing to do. if (modeFlags == 0) { return; } // Attempt to locate an existing record for the uri. for (Iterator<UriPermission> i = uriPermissions.iterator(); i.hasNext(); ) { UriPermission perm = i.next(); if (uri.equals(perm.getUri())) { // Reconstruct the current mode flags. int oldModeFlags = (perm.isReadPermission() ? Intent.FLAG_GRANT_READ_URI_PERMISSION : 0) | (perm.isWritePermission() ? Intent.FLAG_GRANT_WRITE_URI_PERMISSION : 0); // Apply the requested permission change. int newModeFlags = oldModeFlags & ~modeFlags; // Update the permission record if a change occurred. if (newModeFlags != oldModeFlags) { i.remove(); if (newModeFlags != 0) { addUriPermission(uri, newModeFlags); } } break; } } }