IntentSanitizer.Builder
public final class IntentSanitizer.Builder
General strategy of building is to only offer additive “or” operations that are chained together. Any more complex operations can be performed by the developer providing their own custom Predicate.
Summary
Public constructors |
|---|
Builder() |
Public methods |
|
|---|---|
@NonNull IntentSanitizer.Builder |
allowAction(@NonNull String action)Add an action to the list of allowed actions. |
@NonNull IntentSanitizer.Builder |
allowAction(@NonNull Predicate<String> filter)Add a filter for allowed actions. |
@NonNull IntentSanitizer.Builder |
Allow any components. |
@NonNull IntentSanitizer.Builder |
allowCategory(@NonNull String category)Add a category to the allowed category list. |
@NonNull IntentSanitizer.Builder |
allowCategory(@NonNull Predicate<String> filter)Add a filter for allowed categories. |
@NonNull IntentSanitizer.Builder |
allowClipData(@NonNull Predicate<ClipData> filter)Allows clipData that passes the given filter. |
@NonNull IntentSanitizer.Builder |
Allows clipData that contains text. overwrite each other. |
@NonNull IntentSanitizer.Builder |
allowClipDataUri(@NonNull Predicate<Uri> filter)Allows clipData whose items URIs pass the given URI filter. |
@NonNull IntentSanitizer.Builder |
allowClipDataUriWithAuthority(@NonNull String authority)Allows clipData whose items URIs authorities match the given authority. |
@NonNull IntentSanitizer.Builder |
allowComponent(@NonNull ComponentName component)Add a component to the allowed components list. |
@NonNull IntentSanitizer.Builder |
allowComponent(@NonNull Predicate<ComponentName> filter)Add a filter for allowed components. |
@NonNull IntentSanitizer.Builder |
allowComponentWithPackage(@NonNull String packageName)Allow any component under the specified package. |
@NonNull IntentSanitizer.Builder |
Allow data that passes the filter test. |
@NonNull IntentSanitizer.Builder |
allowDataWithAuthority(@NonNull String authority)Convenient method to allow all data whose URI authority equals to the given. |
@NonNull IntentSanitizer.Builder |
Allows an extra member whose key and type of value matches the given. |
@NonNull IntentSanitizer.Builder |
Allows an extra member whose key matches the given key and whose value passes the filter test. |
@NonNull IntentSanitizer.Builder |
Allows an extra member whose key matches the given key and whose value is of the type of the given clazz and passes the value filter. |
@NonNull IntentSanitizer.Builder |
allowExtraOutput(@NonNull Predicate<Uri> filter)Allows an extra member with the key MediaStore.EXTRA_OUTPUT. |
@NonNull IntentSanitizer.Builder |
allowExtraOutput(@NonNull String uriAuthority)Allows an extra member with the key MediaStore.EXTRA_OUTPUT. |
@NonNull IntentSanitizer.Builder |
allowExtraStream(@NonNull Predicate<Uri> filter)Allows an extra member with the key Intent.EXTRA_STREAM. |
@NonNull IntentSanitizer.Builder |
allowExtraStreamUriWithAuthority(@NonNull String uriAuthority)Allows an extra member with the key Intent.EXTRA_STREAM. |
@NonNull IntentSanitizer.Builder |
allowFlags(int flags)Sets allowed flags. |
@NonNull IntentSanitizer.Builder |
Adds all history stack flags into the allowed flags set. |
@NonNull IntentSanitizer.Builder |
Allows any identifier. |
@NonNull IntentSanitizer.Builder |
allowPackage(@NonNull Predicate<String> filter)Add a filter for allowed packages. |
@NonNull IntentSanitizer.Builder |
allowPackage(@NonNull String packageName)Add a package to the allowed packages. |
@NonNull IntentSanitizer.Builder |
Adds all receiver flags into the allowed flags set. |
@NonNull IntentSanitizer.Builder |
Allow any selector. |
@NonNull IntentSanitizer.Builder |
Allow any source bounds. |
@NonNull IntentSanitizer.Builder |
Add a filter for allowed data types. |
@NonNull IntentSanitizer.Builder |
Add a data type to the allowed type list. |
@NonNull IntentSanitizer |
build()Build the IntentSanitizer. |
Public constructors
Public methods
allowAction
public @NonNull IntentSanitizer.Builder allowAction(@NonNull String action)
Add an action to the list of allowed actions. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowAction
public @NonNull IntentSanitizer.Builder allowAction(@NonNull Predicate<String> filter)
Add a filter for allowed actions. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowAnyComponent
public @NonNull IntentSanitizer.Builder allowAnyComponent()
Allow any components. Be cautious to call this method. When this method is called, you should definitely disallow the 4 grant URI permission flags. This method is useful in case the redirected intent is designed to support implicit intent. This method is made mutually exclusive to the 4 methods that allow components or packages.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowCategory
public @NonNull IntentSanitizer.Builder allowCategory(@NonNull String category)
Add a category to the allowed category list. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowCategory
public @NonNull IntentSanitizer.Builder allowCategory(@NonNull Predicate<String> filter)
Add a filter for allowed categories. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowClipData
public @NonNull IntentSanitizer.Builder allowClipData(@NonNull Predicate<ClipData> filter)
Allows clipData that passes the given filter. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowClipDataText
public @NonNull IntentSanitizer.Builder allowClipDataText()
Allows clipData that contains text. overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowClipDataUri
public @NonNull IntentSanitizer.Builder allowClipDataUri(@NonNull Predicate<Uri> filter)
Allows clipData whose items URIs pass the given URI filter. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowClipDataUriWithAuthority
public @NonNull IntentSanitizer.Builder allowClipDataUriWithAuthority(@NonNull String authority)
Allows clipData whose items URIs authorities match the given authority. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowComponent
public @NonNull IntentSanitizer.Builder allowComponent(@NonNull ComponentName component)
Add a component to the allowed components list. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Parameters | |
|---|---|
@NonNull ComponentName component |
the allowed component. |
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowComponent
public @NonNull IntentSanitizer.Builder allowComponent(@NonNull Predicate<ComponentName> filter)
Add a filter for allowed components. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Parameters | |
|---|---|
@NonNull Predicate<ComponentName> filter |
the component filter. |
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowComponentWithPackage
public @NonNull IntentSanitizer.Builder allowComponentWithPackage(@NonNull String packageName)
Allow any component under the specified package. Note this does not allow the package itself. If the intent contains a package, call allowPackage method. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowData
public @NonNull IntentSanitizer.Builder allowData(@NonNull Predicate<Uri> filter)
Allow data that passes the filter test. This method can be called multiple times and the result is additive. They will not overwrite each other.
allowDataWithAuthority
public @NonNull IntentSanitizer.Builder allowDataWithAuthority(@NonNull String authority)
Convenient method to allow all data whose URI authority equals to the given. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder |
allowExtra
public @NonNull IntentSanitizer.Builder allowExtra(@NonNull String key, @NonNull Class<Object> clazz)
Allows an extra member whose key and type of value matches the given. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Parameters | |
|---|---|
@NonNull String key |
the given extra key. |
@NonNull Class<Object> clazz |
the given class of the extra value. |
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowExtra
public @NonNull IntentSanitizer.Builder allowExtra(@NonNull String key, @NonNull Predicate<Object> filter)
Allows an extra member whose key matches the given key and whose value passes the filter test. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Parameters | |
|---|---|
@NonNull String key |
the extra key. |
@NonNull Predicate<Object> filter |
the filter for the extra value. |
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowExtra
public @NonNull IntentSanitizer.Builder <T> allowExtra(
@NonNull String key,
@NonNull Class<T> clazz,
@NonNull Predicate<T> valueFilter
)
Allows an extra member whose key matches the given key and whose value is of the type of the given clazz and passes the value filter. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Parameters | |
|---|---|
@NonNull String key |
given extra key. |
@NonNull Class<T> clazz |
given type of the extra value. |
@NonNull Predicate<T> valueFilter |
the extra value filter. |
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowExtraOutput
public @NonNull IntentSanitizer.Builder allowExtraOutput(@NonNull Predicate<Uri> filter)
Allows an extra member with the key MediaStore.EXTRA_OUTPUT. The value type has to be URI and the value also passes the given filter test. In order to use this method, user has to be explicitly allow the FLAG_GRANT_READ_URI_PERMISSION and FLAG_GRANT_WRITE_URI_PERMISSION flags. Otherwise, it will trigger penalty during sanitization. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowExtraOutput
public @NonNull IntentSanitizer.Builder allowExtraOutput(@NonNull String uriAuthority)
Allows an extra member with the key MediaStore.EXTRA_OUTPUT. The value type has to be URI and the authority matches the given parameter. In order to use this method, user has to be explicitly allow the FLAG_GRANT_READ_URI_PERMISSION and FLAG_GRANT_WRITE_URI_PERMISSION flags. Otherwise, it will trigger penalty during sanitization. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowExtraStream
public @NonNull IntentSanitizer.Builder allowExtraStream(@NonNull Predicate<Uri> filter)
Allows an extra member with the key Intent.EXTRA_STREAM. The value type has to be URI and the value also passes the given filter test. In order to use this method, user has to be explicitly allow the FLAG_GRANT_READ_URI_PERMISSION flag. Otherwise, it will trigger penalty during sanitization. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowExtraStreamUriWithAuthority
public @NonNull IntentSanitizer.Builder allowExtraStreamUriWithAuthority(@NonNull String uriAuthority)
Allows an extra member with the key Intent.EXTRA_STREAM. The value type has to be URI and the authority matches the given parameter. In order to use this method, user has to be explicitly allow the FLAG_GRANT_READ_URI_PERMISSION flag. Otherwise, it will trigger penalty during sanitization. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowFlags
public @NonNull IntentSanitizer.Builder allowFlags(int flags)
Sets allowed flags. This method can be called multiple times and the result is additive. They will not overwrite each other. In most cases following grant URI permission related flags should not be allowed:
- FLAG_GRANT_PERSISTABLE_URI_PERMISSION
- FLAG_GRANT_PREFIX_URI_PERMISSION
- FLAG_GRANT_READ_URI_PERMISSION
- FLAG_GRANT_WRITE_URI_PERMISSION
EXTRA_STREAM or EXTRA_OUTPUT. When these flags are allowed, you should sanitize URIs. See allowDataWithAuthority, allowData, allowClipDataUriWithAuthority, allowClipDataUri, allowExtraStreamUriWithAuthority, allowExtraStream, allowExtraOutput, allowExtraOutput
| Parameters | |
|---|---|
int flags |
allowed flags. |
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowHistoryStackFlags
public @NonNull IntentSanitizer.Builder allowHistoryStackFlags()
Adds all history stack flags into the allowed flags set. They are:
- FLAG_ACTIVITY_BROUGHT_TO_FRONT
- FLAG_ACTIVITY_CLEAR_TASK
- FLAG_ACTIVITY_CLEAR_TOP
- FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
- FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
- FLAG_ACTIVITY_LAUNCH_ADJACENT
- FLAG_ACTIVITY_MULTIPLE_TASK
- FLAG_ACTIVITY_NEW_DOCUMENT
- FLAG_ACTIVITY_NEW_TASK
- FLAG_ACTIVITY_NO_ANIMATION
- FLAG_ACTIVITY_NO_HISTORY
- FLAG_ACTIVITY_PREVIOUS_IS_TOP
- FLAG_ACTIVITY_REORDER_TO_FRONT
- FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
- FLAG_ACTIVITY_RETAIN_IN_RECENTS
- FLAG_ACTIVITY_SINGLE_TOP
- FLAG_ACTIVITY_TASK_ON_HOME
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowIdentifier
public @NonNull IntentSanitizer.Builder allowIdentifier()
Allows any identifier.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowPackage
public @NonNull IntentSanitizer.Builder allowPackage(@NonNull Predicate<String> filter)
Add a filter for allowed packages. This does not imply the intent can contain a component from the allowed package; instead, this value will be compared against the result returned from the Intent's getPackage method. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowPackage
public @NonNull IntentSanitizer.Builder allowPackage(@NonNull String packageName)
Add a package to the allowed packages. This does not imply the intent can contain a component from the allowed package; instead, this value will be compared against the result returned from the Intent's getPackage method. This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowReceiverFlags
public @NonNull IntentSanitizer.Builder allowReceiverFlags()
Adds all receiver flags into the allowed flags set. They are
- FLAG_RECEIVER_FOREGROUND
- FLAG_RECEIVER_NO_ABORT
- FLAG_RECEIVER_REGISTERED_ONLY
- FLAG_RECEIVER_REPLACE_PENDING
- FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowSelector
public @NonNull IntentSanitizer.Builder allowSelector()
Allow any selector.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowSourceBounds
public @NonNull IntentSanitizer.Builder allowSourceBounds()
Allow any source bounds.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder. |
allowType
public @NonNull IntentSanitizer.Builder allowType(@NonNull Predicate<String> filter)
Add a filter for allowed data types. This method can be called multiple times and the result is additive. They will not overwrite each other.
allowType
public @NonNull IntentSanitizer.Builder allowType(@NonNull String type)
Add a data type to the allowed type list. Exact match is used to check the allowed types. For example, if you pass in "image/*" here, it won't allow an intent with type of "image/png". This method can be called multiple times and the result is additive. They will not overwrite each other.
| Returns | |
|---|---|
@NonNull IntentSanitizer.Builder |
this builder |
build
public @NonNull IntentSanitizer build()
Build the IntentSanitizer.
| Returns | |
|---|---|
@NonNull IntentSanitizer |
the IntentSanitizer |