/* * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ package com.facebook.common.util; import javax.annotation.Nullable; import android.net.Uri; public class UriUtil { /** * http scheme for URIs */ public static final String HTTP_SCHEME = "http"; public static final String HTTPS_SCHEME = "https"; /** * File scheme for URIs */ public static final String LOCAL_FILE_SCHEME = "file"; /** * Content URI scheme for URIs */ public static final String LOCAL_CONTENT_SCHEME = "content"; /** * Asset scheme for URIs */ public static final String LOCAL_ASSET_SCHEME = "asset"; /** * Resource scheme for URIs */ public static final String LOCAL_RESOURCE_SCHEME = "res"; /** * /** * Check if uri represents network resource * * @param uri uri to check * @return true if uri's scheme is equal to "http" or "https" */ public static boolean isNetworkUri(@Nullable Uri uri) { final String scheme = getSchemeOrNull(uri); return HTTPS_SCHEME.equals(scheme) || HTTP_SCHEME.equals(scheme); } /** * Check if uri represents local file * * @param uri uri to check * @return true if uri's scheme is equal to "file" */ public static boolean isLocalFileUri(@Nullable Uri uri) { final String scheme = getSchemeOrNull(uri); return LOCAL_FILE_SCHEME.equals(scheme); } /** * Check if uri represents local content * * @param uri uri to check * @return true if uri's scheme is equal to "content" */ public static boolean isLocalContentUri(@Nullable Uri uri) { final String scheme = getSchemeOrNull(uri); return LOCAL_CONTENT_SCHEME.equals(scheme); } /** * Check if uri represents local asset * * @param uri uri to check * @return true if uri's scheme is equal to "asset" */ public static boolean isLocalAssetUri(@Nullable Uri uri) { final String scheme = getSchemeOrNull(uri); return LOCAL_ASSET_SCHEME.equals(scheme); } /** * Check if uri represents local resource * * @param uri uri to check * @return true if uri's scheme is equal to {@link #LOCAL_RESOURCE_SCHEME} */ public static boolean isLocalResourceUri(@Nullable Uri uri) { final String scheme = getSchemeOrNull(uri); return LOCAL_RESOURCE_SCHEME.equals(scheme); } /** * @param uri uri to extract scheme from, possibly null * @return null if uri is null, result of uri.getScheme() otherwise */ @Nullable public static String getSchemeOrNull(@Nullable Uri uri) { return uri == null ? null : uri.getScheme(); } /** * A wrapper around {@link Uri#parse} that returns null if the input is null. * * @param uriAsString the uri as a string * @return the parsed Uri or null if the input was null */ public static Uri parseUriOrNull(@Nullable String uriAsString) { return uriAsString != null ? Uri.parse(uriAsString) : null; } }