Fix DecryptableStreamLocalUriFetcher bug for external video thumbnails.

Fix bug where external video thumbnails do not appear.
This commit is contained in:
alex-signal 2019-09-19 13:42:34 -03:00 committed by Greyson Parrelli
parent d1a6582ad7
commit faafa40122
2 changed files with 18 additions and 4 deletions

View file

@ -4,10 +4,10 @@ import android.content.ContentResolver;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import org.thoughtcrime.securesms.logging.Log;
import com.bumptech.glide.load.data.StreamLocalUriFetcher;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.util.MediaUtil;
import java.io.ByteArrayInputStream;

View file

@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.util;
import android.content.ContentResolver;
import android.content.Context;
import android.graphics.Bitmap;
import android.media.ThumbnailUtils;
import android.net.Uri;
import android.provider.MediaStore;
import androidx.annotation.NonNull;
@ -33,6 +34,7 @@ import org.thoughtcrime.securesms.mms.VideoSlide;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLConnection;
import java.util.concurrent.ExecutionException;
public class MediaUtil {
@ -242,7 +244,7 @@ public class MediaUtil {
}
public static boolean hasVideoThumbnail(Uri uri) {
if (uri == null || !ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) {
if (uri == null || !isSupportedVideoUriScheme(uri.getScheme())) {
return false;
}
@ -250,9 +252,12 @@ public class MediaUtil {
return uri.getLastPathSegment().contains("video");
} else if (uri.toString().startsWith(MediaStore.Video.Media.EXTERNAL_CONTENT_URI.toString())) {
return true;
} else if (uri.toString().startsWith("file://") &&
MediaUtil.isVideo(URLConnection.guessContentTypeFromName(uri.toString()))) {
return true;
} else {
return false;
}
return false;
}
public static @Nullable Bitmap getVideoThumbnail(Context context, Uri uri) {
@ -270,6 +275,10 @@ public class MediaUtil {
videoId,
MediaStore.Images.Thumbnails.MINI_KIND,
null);
} else if (uri.toString().startsWith("file://") &&
MediaUtil.isVideo(URLConnection.guessContentTypeFromName(uri.toString()))) {
return ThumbnailUtils.createVideoThumbnail(uri.toString().replace("file://", ""),
MediaStore.Video.Thumbnails.MINI_KIND);
}
return null;
@ -307,4 +316,9 @@ public class MediaUtil {
bitmap.recycle();
}
}
private static boolean isSupportedVideoUriScheme(@Nullable String scheme) {
return ContentResolver.SCHEME_CONTENT.equals(scheme) ||
ContentResolver.SCHEME_FILE.equals(scheme);
}
}