diff --git a/app/app.iml b/app/app.iml
index 19fd22bb..5a074cf1 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -63,13 +63,6 @@
-
-
-
-
-
-
-
@@ -77,27 +70,24 @@
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 031dcdf6..46754a9d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -139,6 +139,16 @@
+
+
+
+
diff --git a/app/src/main/java/com/murrayc/galaxyzoo/app/ClassifyFragment.java b/app/src/main/java/com/murrayc/galaxyzoo/app/ClassifyFragment.java
index 0416f366..a75c77ad 100644
--- a/app/src/main/java/com/murrayc/galaxyzoo/app/ClassifyFragment.java
+++ b/app/src/main/java/com/murrayc/galaxyzoo/app/ClassifyFragment.java
@@ -24,6 +24,7 @@
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
+import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
diff --git a/app/src/main/java/com/murrayc/galaxyzoo/app/SubjectFragment.java b/app/src/main/java/com/murrayc/galaxyzoo/app/SubjectFragment.java
index 2733d689..e0823b21 100644
--- a/app/src/main/java/com/murrayc/galaxyzoo/app/SubjectFragment.java
+++ b/app/src/main/java/com/murrayc/galaxyzoo/app/SubjectFragment.java
@@ -23,11 +23,17 @@
import android.app.DownloadManager;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.database.Cursor;
+import android.graphics.Bitmap;
import android.net.Uri;
+import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.Environment;
+import android.support.v4.app.ActivityCompat;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
+import android.support.v4.content.FileProvider;
import android.support.v4.content.Loader;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.ShareActionProvider;
@@ -45,6 +51,11 @@
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
/**
* A fragment representing a single subject.
* This fragment is either contained in a {@link ListActivity}
@@ -427,7 +438,63 @@ private void updateShareActionIntent() {
//shareIntent.putExtra(Intent.EXTRA_STREAM, mUriImageStandard);
//shareIntent.setType("image/*");
+ if (mUriStandardRemote!=null) {
+ GetImageBitmapAsyncTask getImageBitmapAsyncTask = new GetImageBitmapAsyncTask(){
+ @Override
+ protected void onPostExecute(Uri uri) {
+ shareIntent.setType("image/*");
+ shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
+ shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ mShareActionProvider.setShareIntent(shareIntent);
+ }
+ };
+ getImageBitmapAsyncTask.execute(mUriStandardRemote);
+ }
+
mShareActionProvider.setShareIntent(shareIntent);
}
+
+ private static final int REQUEST_EXTERNAL_STORAGE = 1;
+ private static String[] PERMISSIONS_STORAGE = {
+ "android.permission.WRITE_EXTERNAL_STORAGE",
+ "android.permission.READ_EXTERNAL_STORAGE"
+ };
+
+ public static void verifyStoragePermissions(Activity activity) {
+ int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE");
+
+ if (permission != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(
+ activity,
+ PERMISSIONS_STORAGE,
+ REQUEST_EXTERNAL_STORAGE
+ );
+ }
+ }
+
+ private class GetImageBitmapAsyncTask extends AsyncTask {
+ @Override
+ protected Uri doInBackground(String... params) {
+ try {
+ Bitmap image = Picasso.with(getContext()).load(params[0]).get();
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ image.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
+
+ //TODO: PROVIDE A MORE DESCRIPTIVE FILENAME HERE IF PLAUSIBLE. Filename will be visible when sharing via certain apps like Gmail etc.
+ String filename = "galaxy_zoo_image.jpg";
+
+ String pathname = Environment.getExternalStorageDirectory() + File.separator + filename;
+ File f = new File(pathname);
+ f.createNewFile();
+ FileOutputStream fo = new FileOutputStream(f);
+ fo.write(bytes.toByteArray());
+ return FileProvider.getUriForFile(getActivity(), getString(R.string.authority_fileprovider), f);
+ } catch (IOException e) {
+ verifyStoragePermissions(getActivity());
+ e.printStackTrace();
+ }
+ return null;
+ }
+ }
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3eeb687b..a98a69ae 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -186,6 +186,9 @@
//when specifying a transition when starting an activity that contains this SubjectFragment.
transition_subject_image
+
+ com.murrayc.galaxyzoo.app.fileprovider
+
- 5 subjects