diff --git a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java
index 0d41038c1..67edea9ee 100644
--- a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java
+++ b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java
@@ -60,6 +60,8 @@ public class MarkerDetailFragment extends Fragment {
private static final long HIDE_TEXT_DELAY = 4 * UnitConversions.ONE_SECOND_MS;
+ private MenuItem shareMarkerImageMenuItem;
+
private ContentProviderUtils contentProviderUtils;
private Handler handler;
private ImageView photoView;
@@ -145,6 +147,7 @@ public class MarkerDetailFragment extends Fragment {
// Need to update the waypoint in case returning after an edit
updateWaypoint(true);
updateUi();
+ updateMenuItems();
}
@Override
@@ -170,8 +173,14 @@ public class MarkerDetailFragment extends Fragment {
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.marker_detail, menu);
-
+ shareMarkerImageMenuItem = menu.findItem(R.id.marker_detail_share);
updateWaypoint(false);
+ updateMenuItems();
+ }
+
+ private void updateMenuItems() {
+ if (shareMarkerImageMenuItem != null)
+ shareMarkerImageMenuItem.setVisible(waypoint.hasPhoto());
}
@Override
@@ -188,6 +197,13 @@ public class MarkerDetailFragment extends Fragment {
.putExtra(MarkerEditActivity.EXTRA_MARKER_ID, markerId);
startActivity(intent);
return true;
+ case R.id.marker_detail_share:
+ if (waypoint.hasPhoto()) {
+ intent = IntentUtils.newShareImageIntent(getContext(), waypoint.getPhotoURI());
+ intent = Intent.createChooser(intent, null);
+ startActivity(intent);
+ }
+ return true;
case R.id.marker_detail_delete:
DeleteMarkerDialogFragment.showDialog(getChildFragmentManager(), new long[]{markerId});
return true;
diff --git a/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java b/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java
index 7bb675c86..7cb7d2b9f 100644
--- a/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java
@@ -107,6 +107,30 @@ public class IntentUtils {
.putExtra(Intent.EXTRA_TEXT, context.getString(R.string.share_track_share_file_body, trackDescription));
}
+ /**
+ * Creates an intent to share a waypoint image with an app.
+ *
+ * @param context the context.
+ * @param uri uri with the image to share.
+ */
+ public static Intent newShareImageIntent(Context context, Uri uri) {
+ String mime = context.getContentResolver().getType(uri);
+
+ /*
+ * Because the #166 bug, when you import KMZ tracks then it creates file:/// from markers with photo.
+ * The photos should be content:/// not file:/// because getType(uri) always returns null for file:///
+ * In .setType, to avoid side effects because the #166 bug described above it checks if mime is null.
+ * If it is then it hardcode "images/*".
+ */
+ return new Intent(Intent.ACTION_SEND)
+ .setType(mime != null ? mime : "image/*")
+ .setAction(Intent.ACTION_SEND)
+ .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
+ .putExtra(Intent.EXTRA_STREAM, uri)
+ .putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.share_image_subject))
+ .putExtra(Intent.EXTRA_TEXT, context.getString(R.string.share_image_body));
+ }
+
public static void showCoordinateOnMap(Context context, Waypoint waypoint) {
showCoordinateOnMap(context, waypoint.getLocation().getLatitude(), waypoint.getLocation().getLongitude(), waypoint.getName());
}
diff --git a/src/main/res/menu/marker_detail.xml b/src/main/res/menu/marker_detail.xml
index f60d636e0..3b63b3a25 100644
--- a/src/main/res/menu/marker_detail.xml
+++ b/src/main/res/menu/marker_detail.xml
@@ -20,6 +20,11 @@ limitations under the License.
android:icon="@drawable/ic_map_24dp"
android:title="@string/menu_show_on_map"
app:showAsAction="ifRoom" />
+
- cascada
fuente de agua
punto de referencia
+
+ Me gustaría compartir una imagen contigo
+ Creo que esta imagen podría interesarte.
diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml
index 52e0b4d56..c3e4d7161 100644
--- a/src/main/res/values-ca/strings.xml
+++ b/src/main/res/values-ca/strings.xml
@@ -448,4 +448,7 @@ es vegi el cel. Torneu-ho a provar més tard.
salt d\'aigua
font d\'aigua
punt de ruta
+
+ Vull compartir una imatge amb tu
+ Crec que aquesta imatge et podria interessar.
diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
index 1c1817eee..0031dc5f8 100644
--- a/src/main/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -450,4 +450,7 @@
cascada
fuente de agua
Punto de ruta
+
+ Me gustaría compartir una imagen contigo
+ Creo que esta imagen te podría interesar.
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 27a9322a0..7a2a264fc 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -595,4 +595,7 @@ limitations under the License.
waterfall
water fountain
waypoint
-
\ No newline at end of file
+
+ I would like to share an image with you
+ I think you might be interested in this image.
+