From 1dbba3ba03bdb96f5ba65d7514197c7da5cf7233 Mon Sep 17 00:00:00 2001 From: Ardzi Firman Ihtiyar Rohanianto Date: Fri, 19 Jan 2018 13:29:02 +0700 Subject: [PATCH 1/2] Update RealPathUtil.java fix bug when share image from other application --- .../shareextension/RealPathUtil.java | 46 +++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/com/alinz/parkerdan/shareextension/RealPathUtil.java b/android/src/main/java/com/alinz/parkerdan/shareextension/RealPathUtil.java index c712e18a..f80439e3 100644 --- a/android/src/main/java/com/alinz/parkerdan/shareextension/RealPathUtil.java +++ b/android/src/main/java/com/alinz/parkerdan/shareextension/RealPathUtil.java @@ -64,10 +64,7 @@ else if (isMediaDocument(uri)) { else if ("content".equalsIgnoreCase(uri.getScheme())) { // Return the remote address - if (isGooglePhotosUri(uri)) - return uri.getLastPathSegment(); - - return getDataColumn(context, uri, null, null); + return saveFile(context, uri).getPath(); } // File else if ("file".equalsIgnoreCase(uri.getScheme())) { @@ -76,6 +73,47 @@ else if ("file".equalsIgnoreCase(uri.getScheme())) { return null; } + + private static Uri saveFile(final Context context, Uri uri) { + Bitmap bitmap = null; + try { + InputStream inputStream = + context.getContentResolver().openInputStream(uri); + bitmap= BitmapFactory.decodeStream(inputStream); + String sdCardPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString(); + File myDir = new File(sdCardPath); + if (!myDir.exists()) { + myDir.mkdir(); + } + + Random generator = new Random(); + int n = 10000; + n = generator.nextInt(n); + String fname = "Image-" + n + ".jpg"; + File file = new File(myDir, fname); + if (file.exists()) + file.delete(); + try { + FileOutputStream out = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); + out.flush(); + out.close(); + + + Uri newURi = Uri.fromFile(file); + + return newURi; + } + catch (Exception e) { + e.printStackTrace(); + } + + }catch (IOException e) { + + } + + return null; + } /** * Get the value of the data column for this Uri. This is useful for From f2f8bdcca8ce9e2e1f9843ea50552be1b86ee690 Mon Sep 17 00:00:00 2001 From: Ardzi Firman Ihtiyar Rohanianto Date: Fri, 19 Jan 2018 14:21:47 +0700 Subject: [PATCH 2/2] Update RealPathUtil.java add import class --- .../com/alinz/parkerdan/shareextension/RealPathUtil.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/android/src/main/java/com/alinz/parkerdan/shareextension/RealPathUtil.java b/android/src/main/java/com/alinz/parkerdan/shareextension/RealPathUtil.java index f80439e3..dd5b7542 100644 --- a/android/src/main/java/com/alinz/parkerdan/shareextension/RealPathUtil.java +++ b/android/src/main/java/com/alinz/parkerdan/shareextension/RealPathUtil.java @@ -2,6 +2,8 @@ import android.content.Context; import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Build; import android.provider.DocumentsContract; @@ -9,6 +11,12 @@ import android.content.ContentUris; import android.os.Environment; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Random; + public class RealPathUtil { public static String getRealPathFromURI(final Context context, final Uri uri) {