Refactoring

pull/214/head
M66B 10 months ago
parent cef79942f4
commit b94e461e6c

@ -577,7 +577,7 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
Helper.copy(is, new FileOutputStream(file)); Helper.copy(is, new FileOutputStream(file));
return FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID, file); return FileProviderEx.getUri(this, BuildConfig.APPLICATION_ID, file);
} catch (Throwable ex) { } catch (Throwable ex) {
Log.w(ex); Log.w(ex);
return uri; return uri;

@ -6359,7 +6359,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
Helper.copy(source, target); Helper.copy(source, target);
return FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, target); return FileProviderEx.getUri(context, BuildConfig.APPLICATION_ID, target);
} }
@Override @Override
@ -7246,7 +7246,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
if (attachments != null) if (attachments != null)
for (EntityAttachment attachment : attachments) { for (EntityAttachment attachment : attachments) {
File file = attachment.getFile(context); File file = attachment.getFile(context);
Uri uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, file); Uri uri = FileProviderEx.getUri(context, BuildConfig.APPLICATION_ID, file, attachment.name);
uris.add(uri); uris.add(uri);
} }

@ -165,10 +165,7 @@ public class EntityAttachment {
Uri getUri(Context context) { Uri getUri(Context context) {
File file = getFile(context); File file = getFile(context);
if (TextUtils.isEmpty(name)) return FileProviderEx.getUri(context, BuildConfig.APPLICATION_ID, file, name);
return FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, file);
else
return FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, file, name);
} }
File getFile(Context context) { File getFile(Context context) {

@ -22,11 +22,14 @@ package eu.faircode.email;
import android.content.Context; import android.content.Context;
import android.content.pm.ProviderInfo; import android.content.pm.ProviderInfo;
import android.net.Uri; import android.net.Uri;
import android.text.TextUtils;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.content.FileProvider; import androidx.core.content.FileProvider;
import java.io.File;
public class FileProviderEx extends FileProvider { public class FileProviderEx extends FileProvider {
// https://android-review.googlesource.com/c/platform/frameworks/support/+/1978527 // https://android-review.googlesource.com/c/platform/frameworks/support/+/1978527
public FileProviderEx() { public FileProviderEx() {
@ -69,6 +72,19 @@ public class FileProviderEx extends FileProvider {
} }
} }
public static Uri getUri(@NonNull Context context, @NonNull String authority, @NonNull File file) {
return getUri(context, authority, file, null);
}
public static Uri getUri(@NonNull Context context, @NonNull String authority, @NonNull File file, @NonNull String name) {
Uri uri;
if (TextUtils.isEmpty(name))
uri = getUriForFile(context, authority, file);
else
uri = getUriForFile(context, authority, file, name);
return uri;
}
@Override @Override
public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) { public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
throw new UnsupportedOperationException("No external updates"); throw new UnsupportedOperationException("No external updates");

@ -3574,7 +3574,7 @@ public class FragmentCompose extends FragmentBase {
File dir = Helper.ensureExists(new File(context.getFilesDir(), "photo")); File dir = Helper.ensureExists(new File(context.getFilesDir(), "photo"));
File file = new File(dir, working + "_" + new Date().getTime() + ".jpg"); File file = new File(dir, working + "_" + new Date().getTime() + ".jpg");
try { try {
photoURI = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, file); photoURI = FileProviderEx.getUri(context, BuildConfig.APPLICATION_ID, file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(intent, REQUEST_TAKE_PHOTO); startActivityForResult(intent, REQUEST_TAKE_PHOTO);
} catch (Throwable ex) { } catch (Throwable ex) {

@ -293,7 +293,7 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase {
for (long id : ids) { for (long id : ids) {
EntityLog.log(context, "Sending raw id=" + id); EntityLog.log(context, "Sending raw id=" + id);
File file = EntityMessage.getRawFile(context, id); File file = EntityMessage.getRawFile(context, id);
Uri uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, file); Uri uri = FileProviderEx.getUri(context, BuildConfig.APPLICATION_ID, file);
uris.add(uri); uris.add(uri);
} }

@ -997,7 +997,7 @@ public class Helper {
static void share(Context context, File file, String type, String name) { static void share(Context context, File file, String type, String name) {
// https://developer.android.com/reference/androidx/core/content/FileProvider // https://developer.android.com/reference/androidx/core/content/FileProvider
Uri uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, file); Uri uri = FileProviderEx.getUri(context, BuildConfig.APPLICATION_ID, file, name);
share(context, uri, type, name); share(context, uri, type, name);
} }

@ -2407,7 +2407,7 @@ public class HtmlHelper {
if (attachment != null && attachment.available) { if (attachment != null && attachment.available) {
File file = attachment.getFile(context); File file = attachment.getFile(context);
if (local) { if (local) {
Uri uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, file); Uri uri = FileProviderEx.getUri(context, BuildConfig.APPLICATION_ID, file, attachment.name);
img.attr("src", uri.toString()); img.attr("src", uri.toString());
Log.i("Inline image uri=" + uri); Log.i("Inline image uri=" + uri);
} else { } else {

Loading…
Cancel
Save