From 7fe7ace504677c09b7eda43606630e008704ee80 Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Tue, 15 May 2012 17:54:40 -0700 Subject: [PATCH] After saving a track to the SD card, add a button to share the saved file. --- MyTracks/res/values/strings.xml | 5 ++ .../apps/mytracks/io/file/SaveActivity.java | 57 ++++++++++--------- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml index e9693c410..1cd15b994 100644 --- a/MyTracks/res/values/strings.xml +++ b/MyTracks/res/values/strings.xml @@ -1956,6 +1956,11 @@ limitations under the License. the user to select an application."> Select an application + + Share track file + diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java index 264cee051..85419ae0f 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java @@ -32,15 +32,15 @@ import android.os.Bundle; import java.io.File; /** - * An activity for saving tracks to the SD card, and optionally play the track. - * + * An activity for saving tracks to the SD card. If saving a specific track, + * option to save it to a temp directory and play the track afterward. + * * @author Rodrigo Damazio */ public class SaveActivity extends Activity { public static final String EXTRA_TRACK_FILE_FORMAT = "track_file_format"; public static final String EXTRA_TRACK_ID = "track_id"; - public static final String EXTRA_SHARE_TRACK = "share_track"; public static final String EXTRA_PLAY_TRACK = "play_track"; public static final String GOOGLE_EARTH_KML_MIME_TYPE = "application/vnd.google-earth.kml+xml"; @@ -56,7 +56,6 @@ public class SaveActivity extends Activity { private TrackFileFormat trackFileFormat; private long trackId; - private boolean shareTrack; private boolean playTrack; private SaveAsyncTask saveAsyncTask; @@ -78,7 +77,6 @@ public class SaveActivity extends Activity { Intent intent = getIntent(); trackFileFormat = intent.getParcelableExtra(EXTRA_TRACK_FILE_FORMAT); trackId = intent.getLongExtra(EXTRA_TRACK_ID, -1L); - shareTrack = intent.getBooleanExtra(EXTRA_SHARE_TRACK, false); playTrack = intent.getBooleanExtra(EXTRA_PLAY_TRACK, false); Object retained = getLastNonConfigurationInstance(); @@ -86,7 +84,7 @@ public class SaveActivity extends Activity { saveAsyncTask = (SaveAsyncTask) retained; saveAsyncTask.setActivity(this); } else { - saveAsyncTask = new SaveAsyncTask(this, trackFileFormat, trackId, shareTrack || playTrack); + saveAsyncTask = new SaveAsyncTask(this, trackFileFormat, trackId, playTrack); saveAsyncTask.execute(); } } @@ -111,7 +109,7 @@ public class SaveActivity extends Activity { }); return progressDialog; case DIALOG_RESULT_ID: - return new AlertDialog.Builder(this) + AlertDialog.Builder builder = new AlertDialog.Builder(this) .setCancelable(true) .setIcon(success ? android.R.drawable.ic_dialog_info : android.R.drawable.ic_dialog_alert) @@ -130,8 +128,25 @@ public class SaveActivity extends Activity { onPostResultDialog(); } }) - .setTitle(success ? R.string.generic_success_title : R.string.generic_error_title) - .create(); + .setTitle(success ? R.string.generic_success_title : R.string.generic_error_title); + + if (success && trackId != -1L && !playTrack) { + builder.setNegativeButton( + R.string.share_track_share_file, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(Intent.ACTION_SEND) + .putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(savedPath))) + .putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_track_subject)) + .putExtra(Intent.EXTRA_TEXT, getString(R.string.share_track_file_body_format)) + .putExtra(getString(R.string.track_id_broadcast_extra), trackId) + .setType(trackFileFormat.getMimeType()); + startActivity( + Intent.createChooser(intent, getString(R.string.share_track_picker_title))); + } + }); + } + return builder.create(); default: return null; } @@ -177,23 +192,13 @@ public class SaveActivity extends Activity { * To be invoked after showing the result dialog. */ private void onPostResultDialog() { - if (success) { - if (shareTrack) { - Intent intent = new Intent(Intent.ACTION_SEND) - .putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(savedPath))) - .putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_track_subject)) - .putExtra(Intent.EXTRA_TEXT, getString(R.string.share_track_file_body_format)) - .putExtra(getString(R.string.track_id_broadcast_extra), trackId) - .setType(trackFileFormat.getMimeType()); - startActivity(Intent.createChooser(intent, getString(R.string.share_track_picker_title))); - } else if (playTrack) { - Intent intent = new Intent() - .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK) - .putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID) - .setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS) - .setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE); - startActivity(intent); - } + if (success && playTrack) { + Intent intent = new Intent() + .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK) + .putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID) + .setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS) + .setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE); + startActivity(intent); } finish(); }