diff options
| -rw-r--r-- | main/src/cgeo/geocaching/ImageSelectActivity.java | 27 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/files/LocalStorage.java | 2 |
2 files changed, 25 insertions, 4 deletions
diff --git a/main/src/cgeo/geocaching/ImageSelectActivity.java b/main/src/cgeo/geocaching/ImageSelectActivity.java index a9230c9..d6d32ec 100644 --- a/main/src/cgeo/geocaching/ImageSelectActivity.java +++ b/main/src/cgeo/geocaching/ImageSelectActivity.java @@ -4,11 +4,13 @@ import butterknife.ButterKnife; import butterknife.InjectView; import cgeo.geocaching.activity.AbstractActivity; +import cgeo.geocaching.files.LocalStorage; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.ui.dialog.Dialogs; import cgeo.geocaching.utils.ImageUtils; import cgeo.geocaching.utils.Log; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.eclipse.jdt.annotation.Nullable; @@ -16,6 +18,8 @@ import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.net.Uri; +import android.os.Build; +import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.provider.MediaStore; import android.provider.MediaStore.MediaColumns; @@ -28,6 +32,10 @@ import android.widget.ImageView; import android.widget.Spinner; import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.OutputStream; public class ImageSelectActivity extends AbstractActivity { @@ -219,8 +227,8 @@ public class ImageSelectActivity extends AbstractActivity { return; } - if (data != null) { - Uri selectedImage = data.getData(); + final Uri selectedImage = data.getData(); + if (Build.VERSION.SDK_INT < VERSION_CODES.KITKAT) { String[] filePathColumn = { MediaColumns.DATA }; Cursor cursor = null; @@ -250,7 +258,20 @@ public class ImageSelectActivity extends AbstractActivity { Log.d("SELECT IMAGE data = " + data.toString()); } else { - Log.d("SELECT IMAGE data is null"); + InputStream input = null; + OutputStream output = null; + try { + input = getContentResolver().openInputStream(selectedImage); + final File outputFile = ImageUtils.getOutputImageFile(); + output = new FileOutputStream(outputFile); + LocalStorage.copy(input, output); + imageUri = Uri.fromFile(outputFile); + } catch (FileNotFoundException e) { + Log.e("ImageSelectActivity.onStartResult", e); + } finally { + IOUtils.closeQuietly(input); + IOUtils.closeQuietly(output); + } } if (requestCode == SELECT_NEW_IMAGE) { diff --git a/main/src/cgeo/geocaching/files/LocalStorage.java b/main/src/cgeo/geocaching/files/LocalStorage.java index 3dcb200..626f6e6 100644 --- a/main/src/cgeo/geocaching/files/LocalStorage.java +++ b/main/src/cgeo/geocaching/files/LocalStorage.java @@ -335,7 +335,7 @@ public final class LocalStorage { return copyDone; } - private static boolean copy(final InputStream input, final OutputStream output) { + public static boolean copy(final InputStream input, final OutputStream output) { try { int length; final byte[] buffer = new byte[4096]; |
