Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cleanup unused code #3899

Merged
merged 1 commit into from
Apr 17, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
179 changes: 9 additions & 170 deletions src/main/java/com/owncloud/android/utils/UriUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,193 +18,38 @@

package com.owncloud.android.utils;

import android.annotation.TargetApi;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.webkit.MimeTypeMap;

import com.owncloud.android.lib.common.utils.Log_OC;

import java.util.Locale;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;


/**
* A helper class for some Uri operations.
*/
public final class UriUtils {

public static final String TAG = UriUtils.class.getSimpleName();
private static final String TAG = UriUtils.class.getSimpleName();

public static final String URI_CONTENT_SCHEME = "content://";

private UriUtils() {
// utility class -> private constructor
}

/**
* Get the value of the data column for this Uri. This is useful for
* MediaStore Uris, and other file-based ContentProviders.
*
* @param context The context.
* @param uri The Uri to query.
* @param selection (Optional) Filter used in the query.
* @param selectionArgs (Optional) Selection arguments used in the query.
* @return The value of the _data column, which is typically a file path.
*/
public static String getDataColumn(Context context, Uri uri, String selection, String... selectionArgs) {

Cursor cursor = null;
final String column = "_data";
final String[] projection = {column};

try {
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {

final int column_index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(column_index);
}
} finally {
if (cursor != null) {
cursor.close();
}
}
return null;
}

/**
* @param uri The Uri to check.
* @return Whether the Uri authority is ExternalStorageProvider.
*/
public static boolean isExternalStorageDocument(Uri uri) {
return "com.android.externalstorage.documents".equals(uri.getAuthority());
}

/**
* @param uri The Uri to check.
* @return Whether the Uri authority is DownloadsProvider.
*/
public static boolean isDownloadsDocument(Uri uri) {
return "com.android.providers.downloads.documents".equals(uri.getAuthority());
}

/**
* @param uri The Uri to check.
* @return Whether the Uri authority is MediaProvider.
*/
public static boolean isMediaDocument(Uri uri) {
return "com.android.providers.media.documents".equals(uri.getAuthority());
}

/**
* @param uri The Uri to check.
* @return Whether the Uri authority is Google Photos.
*/
public static boolean isGooglePhotosUri(Uri uri) {
return "com.google.android.apps.photos.content".equals(uri.getAuthority());
}

/**
*
* @param uri The Uri to check.
* @return Whether the Uri is from a content provider as kind "content://..."
*/
public static boolean isContentDocument(Uri uri) {
return uri.toString().startsWith(URI_CONTENT_SCHEME);
}


/**
* Translates a content:// URI referred to a local file file to a path on the local filesystem
*
* @param uri The URI to resolve
* @return The path in the file system to the content or null if it could not be found (not a file)
*/
@TargetApi(Build.VERSION_CODES.KITKAT)
@SuppressFBWarnings("Bx")
public static String getLocalPath(Uri uri, Context context) {
final boolean isKitKatOrLater = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;

// DocumentProvider
if (isKitKatOrLater && DocumentsContract.isDocumentUri(context, uri)) {
// ExternalStorageProvider
if (UriUtils.isExternalStorageDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];

if ("primary".equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + "/" + split[1];
}
}
// DownloadsProvider
else if (UriUtils.isDownloadsDocument(uri)) {

final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
Long.valueOf(id));

return UriUtils.getDataColumn(context, contentUri, null, (String) null);
}
// MediaProvider
else if (UriUtils.isMediaDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];

Uri contentUri = null;
if ("image".equals(type)) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if ("video".equals(type)) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} else if ("audio".equals(type)) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
}

final String selection = "_id=?";
final String[] selectionArgs = new String[]{split[1]};

return UriUtils.getDataColumn(context, contentUri, selection, selectionArgs);
}
// Documents providers returned as content://...
else if (UriUtils.isContentDocument(uri)) {
return uri.toString();
}
}
// MediaStore (and general)
else if ("content".equalsIgnoreCase(uri.getScheme())) {

// Return the remote address
if (UriUtils.isGooglePhotosUri(uri)) {
return uri.getLastPathSegment();
}

return UriUtils.getDataColumn(context, uri, null, (String) null);
}
// File
else if ("file".equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
}
return null;
}


public static String getDisplayNameForUri(Uri uri, Context context) {

if (uri == null || context == null) {
throw new IllegalArgumentException("Received NULL!");
}

String displayName = null;
String displayName;

if (!ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) {
displayName = uri.getLastPathSegment(); // ready to return
Expand Down Expand Up @@ -258,15 +103,13 @@ private static String getDisplayNameFromContentResolver(Uri uri, Context context
displayNameColumn = MediaStore.Files.FileColumns.DISPLAY_NAME;
}

Cursor cursor = null;
try {
cursor = context.getContentResolver().query(
uri,
new String[]{displayNameColumn},
null,
null,
null
);
try (Cursor cursor = context.getContentResolver().query(
uri,
new String[]{displayNameColumn},
null,
null,
null
)) {
if (cursor != null) {
cursor.moveToFirst();
displayName = cursor.getString(cursor.getColumnIndex(displayNameColumn));
Expand All @@ -276,10 +119,6 @@ private static String getDisplayNameFromContentResolver(Uri uri, Context context
Log_OC.e(TAG, "Could not retrieve display name for " + uri.toString());
// nothing else, displayName keeps null

} finally {
if (cursor != null) {
cursor.close();
}
}
}
return displayName;
Expand Down