mirror of
https://github.com/russok/FitoTrack.git
synced 2025-10-28 16:22:12 -07:00
79 lines
2.9 KiB
Java
79 lines
2.9 KiB
Java
package de.tadris.fitness.util;
|
|
|
|
import android.app.Activity;
|
|
import android.app.AlertDialog;
|
|
import android.content.Intent;
|
|
import android.net.Uri;
|
|
import android.os.Environment;
|
|
import android.util.Log;
|
|
import android.widget.Toast;
|
|
|
|
import org.apache.commons.io.IOUtils;
|
|
|
|
import java.io.BufferedInputStream;
|
|
import java.io.File;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.OutputStream;
|
|
|
|
import de.tadris.fitness.R;
|
|
|
|
public class FileUtils {
|
|
|
|
public static void saveOrShareFile(Activity activity, Uri uri, String suffix) {
|
|
String[] colors = {activity.getString(R.string.share), activity.getString(R.string.save)};
|
|
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
|
builder.setItems(colors, (dialog, which) -> {
|
|
if (which == 0) {
|
|
shareFile(activity, uri);
|
|
} else {
|
|
try {
|
|
saveFile(activity, uri, suffix);
|
|
Toast.makeText(activity, R.string.savedToDownloads, Toast.LENGTH_LONG).show();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
Toast.makeText(activity, R.string.savingFailed, Toast.LENGTH_LONG).show();
|
|
}
|
|
}
|
|
});
|
|
builder.show();
|
|
}
|
|
|
|
private static void saveFile(Activity activity, Uri fileUri, String suffix) throws IOException {
|
|
File target = new File(Environment.getExternalStorageDirectory(), "Download/fitotrack" + System.currentTimeMillis() + "." + suffix);
|
|
if (!target.createNewFile()) {
|
|
throw new IOException("Cannot write to file " + target);
|
|
}
|
|
copyFile(activity, fileUri, Uri.fromFile(target));
|
|
}
|
|
|
|
private static void copyFile(Activity activity, Uri sourceUri, Uri targetUri) throws IOException {
|
|
InputStream input = activity.getContentResolver().openInputStream(sourceUri);
|
|
if (input == null) {
|
|
throw new IOException("Source file not found");
|
|
}
|
|
OutputStream output = activity.getContentResolver().openOutputStream(targetUri);
|
|
IOUtils.copy(input, output);
|
|
}
|
|
|
|
private static void shareFile(Activity activity, Uri uri) {
|
|
Intent intentShareFile = new Intent(Intent.ACTION_SEND);
|
|
intentShareFile.setDataAndType(uri, activity.getContentResolver().getType(uri));
|
|
intentShareFile.putExtra(Intent.EXTRA_STREAM, uri);
|
|
intentShareFile.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
|
|
|
activity.startActivity(Intent.createChooser(intentShareFile, activity.getString(R.string.shareFile)));
|
|
|
|
Log.d("Export", uri.toString());
|
|
Log.d("Export", activity.getContentResolver().getType(uri));
|
|
try {
|
|
Log.d("Export", new BufferedInputStream(activity.getContentResolver().openInputStream(uri)).toString());
|
|
} catch (FileNotFoundException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
}
|