forked from upstream-mirrors/OpenTracks
After saving a track to the SD card, add a button to share the saved file.
This commit is contained in:
@@ -1956,6 +1956,11 @@ limitations under the License.
|
|||||||
the user to select an application.">
|
the user to select an application.">
|
||||||
Select an application
|
Select an application
|
||||||
</string>
|
</string>
|
||||||
|
<string name="share_track_share_file"
|
||||||
|
translation_description="After saving a track to SD card, the button on the result dialog to
|
||||||
|
share the saved track file with friends.">
|
||||||
|
Share track file
|
||||||
|
</string>
|
||||||
<string name="share_track_share_url"
|
<string name="share_track_share_url"
|
||||||
translation_description="After sending a track to Google, the button on the result dialog to
|
translation_description="After sending a track to Google, the button on the result dialog to
|
||||||
share the uploaded track URL with friends.">
|
share the uploaded track URL with friends.">
|
||||||
|
|||||||
@@ -32,15 +32,15 @@ import android.os.Bundle;
|
|||||||
import java.io.File;
|
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
|
* @author Rodrigo Damazio
|
||||||
*/
|
*/
|
||||||
public class SaveActivity extends Activity {
|
public class SaveActivity extends Activity {
|
||||||
|
|
||||||
public static final String EXTRA_TRACK_FILE_FORMAT = "track_file_format";
|
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_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 EXTRA_PLAY_TRACK = "play_track";
|
||||||
|
|
||||||
public static final String GOOGLE_EARTH_KML_MIME_TYPE = "application/vnd.google-earth.kml+xml";
|
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 TrackFileFormat trackFileFormat;
|
||||||
private long trackId;
|
private long trackId;
|
||||||
private boolean shareTrack;
|
|
||||||
private boolean playTrack;
|
private boolean playTrack;
|
||||||
|
|
||||||
private SaveAsyncTask saveAsyncTask;
|
private SaveAsyncTask saveAsyncTask;
|
||||||
@@ -78,7 +77,6 @@ public class SaveActivity extends Activity {
|
|||||||
Intent intent = getIntent();
|
Intent intent = getIntent();
|
||||||
trackFileFormat = intent.getParcelableExtra(EXTRA_TRACK_FILE_FORMAT);
|
trackFileFormat = intent.getParcelableExtra(EXTRA_TRACK_FILE_FORMAT);
|
||||||
trackId = intent.getLongExtra(EXTRA_TRACK_ID, -1L);
|
trackId = intent.getLongExtra(EXTRA_TRACK_ID, -1L);
|
||||||
shareTrack = intent.getBooleanExtra(EXTRA_SHARE_TRACK, false);
|
|
||||||
playTrack = intent.getBooleanExtra(EXTRA_PLAY_TRACK, false);
|
playTrack = intent.getBooleanExtra(EXTRA_PLAY_TRACK, false);
|
||||||
|
|
||||||
Object retained = getLastNonConfigurationInstance();
|
Object retained = getLastNonConfigurationInstance();
|
||||||
@@ -86,7 +84,7 @@ public class SaveActivity extends Activity {
|
|||||||
saveAsyncTask = (SaveAsyncTask) retained;
|
saveAsyncTask = (SaveAsyncTask) retained;
|
||||||
saveAsyncTask.setActivity(this);
|
saveAsyncTask.setActivity(this);
|
||||||
} else {
|
} else {
|
||||||
saveAsyncTask = new SaveAsyncTask(this, trackFileFormat, trackId, shareTrack || playTrack);
|
saveAsyncTask = new SaveAsyncTask(this, trackFileFormat, trackId, playTrack);
|
||||||
saveAsyncTask.execute();
|
saveAsyncTask.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,7 +109,7 @@ public class SaveActivity extends Activity {
|
|||||||
});
|
});
|
||||||
return progressDialog;
|
return progressDialog;
|
||||||
case DIALOG_RESULT_ID:
|
case DIALOG_RESULT_ID:
|
||||||
return new AlertDialog.Builder(this)
|
AlertDialog.Builder builder = new AlertDialog.Builder(this)
|
||||||
.setCancelable(true)
|
.setCancelable(true)
|
||||||
.setIcon(success
|
.setIcon(success
|
||||||
? android.R.drawable.ic_dialog_info : android.R.drawable.ic_dialog_alert)
|
? android.R.drawable.ic_dialog_info : android.R.drawable.ic_dialog_alert)
|
||||||
@@ -130,8 +128,25 @@ public class SaveActivity extends Activity {
|
|||||||
onPostResultDialog();
|
onPostResultDialog();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setTitle(success ? R.string.generic_success_title : R.string.generic_error_title)
|
.setTitle(success ? R.string.generic_success_title : R.string.generic_error_title);
|
||||||
.create();
|
|
||||||
|
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:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -177,23 +192,13 @@ public class SaveActivity extends Activity {
|
|||||||
* To be invoked after showing the result dialog.
|
* To be invoked after showing the result dialog.
|
||||||
*/
|
*/
|
||||||
private void onPostResultDialog() {
|
private void onPostResultDialog() {
|
||||||
if (success) {
|
if (success && playTrack) {
|
||||||
if (shareTrack) {
|
Intent intent = new Intent()
|
||||||
Intent intent = new Intent(Intent.ACTION_SEND)
|
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(savedPath)))
|
.putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID)
|
||||||
.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_track_subject))
|
.setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS)
|
||||||
.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_track_file_body_format))
|
.setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE);
|
||||||
.putExtra(getString(R.string.track_id_broadcast_extra), trackId)
|
startActivity(intent);
|
||||||
.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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user