summaryrefslogtreecommitdiffhomepage
path: root/ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.java
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-03-27 02:31:45 -0600
committerJason A. Donenfeld <Jason@zx2c4.com>2020-03-27 03:08:47 -0600
commit8669c01eaa47a39d2c36147d4dbe2e987e0520c9 (patch)
treed5cee042ae892c76270ea4f8d5621e55a905aa7f /ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.java
parent37949ba1ec44bcc9051075cf553cd92df203dff3 (diff)
util: begin conversion to kotlin
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.java')
-rw-r--r--ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.java108
1 files changed, 0 insertions, 108 deletions
diff --git a/ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.java b/ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.java
deleted file mode 100644
index 14895b64..00000000
--- a/ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright © 2019 WireGuard LLC. All Rights Reserved.
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package com.wireguard.android.util;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Environment;
-import android.provider.MediaStore;
-import android.provider.MediaStore.MediaColumns;
-
-import com.wireguard.android.R;
-import com.wireguard.util.NonNullForAll;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-@NonNullForAll
-public final class DownloadsFileSaver {
-
- private DownloadsFileSaver() {
- // Prevent instantiation
- }
-
- public static DownloadsFile save(final Context context, final String name, final String mimeType, final boolean overwriteExisting) throws Exception {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- final ContentResolver contentResolver = context.getContentResolver();
- if (overwriteExisting)
- contentResolver.delete(MediaStore.Downloads.EXTERNAL_CONTENT_URI, String.format("%s = ?", MediaColumns.DISPLAY_NAME), new String[]{name});
- final ContentValues contentValues = new ContentValues();
- contentValues.put(MediaColumns.DISPLAY_NAME, name);
- contentValues.put(MediaColumns.MIME_TYPE, mimeType);
- final Uri contentUri = contentResolver.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, contentValues);
- if (contentUri == null)
- throw new IOException(context.getString(R.string.create_downloads_file_error));
- final OutputStream contentStream = contentResolver.openOutputStream(contentUri);
- if (contentStream == null)
- throw new IOException(context.getString(R.string.create_downloads_file_error));
- @SuppressWarnings("deprecation")
- Cursor cursor = contentResolver.query(contentUri, new String[]{MediaColumns.DATA}, null, null, null);
- String path = null;
- if (cursor != null) {
- try {
- if (cursor.moveToFirst())
- path = cursor.getString(0);
- } finally {
- cursor.close();
- }
- }
- if (path == null) {
- path = "Download/";
- cursor = contentResolver.query(contentUri, new String[]{MediaColumns.DISPLAY_NAME}, null, null, null);
- if (cursor != null) {
- try {
- if (cursor.moveToFirst())
- path += cursor.getString(0);
- } finally {
- cursor.close();
- }
- }
- }
- return new DownloadsFile(context, contentStream, path, contentUri);
- } else {
- @SuppressWarnings("deprecation") final File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
- final File file = new File(path, name);
- if (!path.isDirectory() && !path.mkdirs())
- throw new IOException(context.getString(R.string.create_output_dir_error));
- return new DownloadsFile(context, new FileOutputStream(file), file.getAbsolutePath(), null);
- }
- }
-
- public static final class DownloadsFile {
- private final Context context;
- private final String fileName;
- private final OutputStream outputStream;
- private final Uri uri;
-
- private DownloadsFile(final Context context, final OutputStream outputStream, final String fileName, final Uri uri) {
- this.context = context;
- this.outputStream = outputStream;
- this.fileName = fileName;
- this.uri = uri;
- }
-
- public void delete() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
- context.getContentResolver().delete(uri, null, null);
- else
- new File(fileName).delete();
- }
-
- public String getFileName() {
- return fileName;
- }
-
- public OutputStream getOutputStream() {
- return outputStream;
- }
- }
-}