Explicitly grant and revoke read permission when playing a track

This commit is contained in:
Jimmy Shih
2013-12-06 11:11:41 -08:00
parent 61bc8f5bbe
commit caa1680dc6
3 changed files with 5 additions and 2 deletions
@@ -25,6 +25,7 @@ import android.content.ContentProvider;
import android.content.ContentUris; import android.content.ContentUris;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.UriMatcher; import android.content.UriMatcher;
import android.database.Cursor; import android.database.Cursor;
import android.database.SQLException; import android.database.SQLException;
@@ -423,6 +424,7 @@ public class MyTracksProvider extends ContentProvider {
for (File file : dir.listFiles()) { for (File file : dir.listFiles()) {
file.delete(); file.delete();
} }
getContext().revokeUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
} }
} }
@@ -207,7 +207,7 @@ public class SaveActivity extends Activity {
savedPath = aSavedPath; savedPath = aSavedPath;
removeDialog(DIALOG_PROGRESS_ID); removeDialog(DIALOG_PROGRESS_ID);
if (playTrack && successCount == 1 && totalCount == 1 && savedPath != null) { if (playTrack && successCount == 1 && totalCount == 1 && savedPath != null) {
startActivity(GoogleEarthUtils.getPlayInEarthIntent(savedPath)); startActivity(GoogleEarthUtils.getPlayInEarthIntent(this, savedPath));
finish(); finish();
} else { } else {
showDialog(DIALOG_RESULT_ID); showDialog(DIALOG_RESULT_ID);
@@ -82,9 +82,10 @@ public class GoogleEarthUtils {
* *
* @param kmlFilePath the kml file path * @param kmlFilePath the kml file path
*/ */
public static Intent getPlayInEarthIntent(String kmlFilePath) { public static Intent getPlayInEarthIntent(Context context, String kmlFilePath) {
Uri uri = new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT) Uri uri = new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
.authority(MyTracksProviderUtils.AUTHORITY).path(kmlFilePath).build(); .authority(MyTracksProviderUtils.AUTHORITY).path(kmlFilePath).build();
context.grantUriPermission(GOOGLE_EARTH_PACKAGE, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
return new Intent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK return new Intent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_GRANT_READ_URI_PERMISSION) | Intent.FLAG_GRANT_READ_URI_PERMISSION)
.putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, TOUR_FEATURE_ID_VALUE) .putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, TOUR_FEATURE_ID_VALUE)