63 lines
1.7 KiB
Java
63 lines
1.7 KiB
Java
package org.mian.gitnex.helpers.attachments;
|
|
|
|
import android.content.Context;
|
|
import android.database.Cursor;
|
|
import android.net.Uri;
|
|
import android.provider.OpenableColumns;
|
|
import android.util.Log;
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.io.InputStream;
|
|
import java.io.OutputStream;
|
|
import java.util.Objects;
|
|
|
|
/**
|
|
* @author M M Arif
|
|
*/
|
|
public class AttachmentUtils {
|
|
|
|
public static File getFile(Context ctx, Uri uri) {
|
|
|
|
File destinationFilename;
|
|
try {
|
|
destinationFilename =
|
|
new File(
|
|
ctx.getFilesDir().getPath() + File.separatorChar + queryName(ctx, uri));
|
|
} catch (AssertionError e) {
|
|
destinationFilename = new File(Objects.requireNonNull(uri.getPath()));
|
|
}
|
|
|
|
try (InputStream ins = ctx.getContentResolver().openInputStream(uri)) {
|
|
createFileFromStream(ins, destinationFilename);
|
|
} catch (Exception ex) {
|
|
Log.e("AttachmentUtils", Objects.requireNonNull(ex.getMessage()));
|
|
}
|
|
return destinationFilename;
|
|
}
|
|
|
|
public static String queryName(Context ctx, Uri uri) {
|
|
|
|
Cursor returnCursor = ctx.getContentResolver().query(uri, null, null, null, null);
|
|
assert returnCursor != null;
|
|
int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
|
|
returnCursor.moveToFirst();
|
|
String name = returnCursor.getString(nameIndex);
|
|
returnCursor.close();
|
|
return name;
|
|
}
|
|
|
|
public static void createFileFromStream(InputStream ins, File destination) {
|
|
|
|
try (OutputStream os = new FileOutputStream(destination)) {
|
|
byte[] buffer = new byte[4096];
|
|
int length;
|
|
while ((length = ins.read(buffer)) > 0) {
|
|
os.write(buffer, 0, length);
|
|
}
|
|
os.flush();
|
|
} catch (Exception ex) {
|
|
Log.e("AttachmentUtils", Objects.requireNonNull(ex.getMessage()));
|
|
}
|
|
}
|
|
}
|