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. +