Intents.java revision 928a39fb533255b34145285fabbd4f51961df63a
1f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru/* 2f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Copyright (C) 2011 Google Inc. 3f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Licensed to The Android Open Source Project. 4f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 5f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Licensed under the Apache License, Version 2.0 (the "License"); 6f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * you may not use this file except in compliance with the License. 7f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * You may obtain a copy of the License at 8f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 9f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * http://www.apache.org/licenses/LICENSE-2.0 10f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 11f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Unless required by applicable law or agreed to in writing, software 12f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * distributed under the License is distributed on an "AS IS" BASIS, 13f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * See the License for the specific language governing permissions and 15f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * limitations under the License. 16f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 17f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 18f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattagurupackage com.android.ex.photo; 19f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 20f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.content.ContentProvider; 21f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.content.Context; 22f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.content.Intent; 23f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport android.text.TextUtils; 24f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 25f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguruimport com.android.ex.photo.fragments.PhotoViewFragment; 26f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 27f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru/** 28f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Build intents to start app activities 29f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 30f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattagurupublic class Intents { 31f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru // Intent extras 32f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public static final String EXTRA_PHOTO_INDEX = "photo_index"; 33f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public static final String EXTRA_PHOTO_ID = "photo_id"; 34f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public static final String EXTRA_PHOTOS_URI = "photos_uri"; 35f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public static final String EXTRA_RESOLVED_PHOTO_URI = "resolved_photo_uri"; 36f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public static final String EXTRA_PHOTO_NAME = "photo_name"; 37f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public static final String EXTRA_PROJECTION = "projection"; 38f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public static final String EXTRA_THUMBNAIL_URI = "thumbnail_uri"; 39f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 40f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 41f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Gets a photo view intent builder to display the photos from phone activity. 42f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 43f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @param context The context 44f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @return The intent builder 45f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 46f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public static PhotoViewIntentBuilder newPhotoViewActivityIntentBuilder(Context context) { 47f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru return new PhotoViewIntentBuilder(context, PhotoViewActivity.class); 48f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 49f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 50f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 51f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Gets a photo view intent builder to display the photo view fragment 52f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * 53f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * @param context The context 542d06aee09507252ba6703ecd2c4f9f356048e6adshailendra * @return The intent builder 55f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 56f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public static PhotoViewIntentBuilder newPhotoViewFragmentIntentBuilder(Context context) { 57f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru return new PhotoViewIntentBuilder(context, PhotoViewFragment.class); 582d06aee09507252ba6703ecd2c4f9f356048e6adshailendra } 59f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 60f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** Gets a new photo view intent builder */ 61f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public static PhotoViewIntentBuilder newPhotoViewIntentBuilder( 62f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru Context context, Class<? extends PhotoViewActivity> cls) { 63f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru return new PhotoViewIntentBuilder(context, cls); 64f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 65f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 66f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** Builder to create a photo view intent */ 672d06aee09507252ba6703ecd2c4f9f356048e6adshailendra public static class PhotoViewIntentBuilder { 68f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private final Intent mIntent; 69f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 70f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** The name of the photo being displayed */ 71f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private String mPhotoName; 72f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** The index of the photo to show */ 73f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private Integer mPhotoIndex; 74f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** The URI of the group of photos to display */ 75f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private String mPhotosUri; 76f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** The URL of the photo to display */ 77f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private String mResolvedPhotoUri; 78f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** The projection for the query to use; optional */ 79f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private String[] mProjection; 80f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** The URI of a thumbnail of the photo to display */ 81f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private String mThumbnailUri; 82f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 83f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru private PhotoViewIntentBuilder(Context context, Class<?> cls) { 84f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mIntent = new Intent(context, cls); 85f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 86f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 87f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** Sets the photo name */ 88f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public PhotoViewIntentBuilder setPhotoName(String photoName) { 89f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mPhotoName = photoName; 902d06aee09507252ba6703ecd2c4f9f356048e6adshailendra return this; 91f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 92f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 93f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** Sets the photo index */ 94f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public PhotoViewIntentBuilder setPhotoIndex(Integer photoIndex) { 95f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mPhotoIndex = photoIndex; 96f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru return this; 972d06aee09507252ba6703ecd2c4f9f356048e6adshailendra } 982d06aee09507252ba6703ecd2c4f9f356048e6adshailendra 992d06aee09507252ba6703ecd2c4f9f356048e6adshailendra /** Sets the photos URI */ 1002d06aee09507252ba6703ecd2c4f9f356048e6adshailendra public PhotoViewIntentBuilder setPhotosUri(String photosUri) { 101f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mPhotosUri = photosUri; 102f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru return this; 103f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 104f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 105f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** Sets the query projection */ 106f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public PhotoViewIntentBuilder setProjection(String[] projection) { 107f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mProjection = projection; 108f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru return this; 109f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 110f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 1112d06aee09507252ba6703ecd2c4f9f356048e6adshailendra /** Sets the resolved photo URI. This method is for the case 1122d06aee09507252ba6703ecd2c4f9f356048e6adshailendra * where the URI given to {@link PhotoViewActivity} points directly 1132d06aee09507252ba6703ecd2c4f9f356048e6adshailendra * to a single image and does not need to be resolved via a query 1142d06aee09507252ba6703ecd2c4f9f356048e6adshailendra * to the {@link ContentProvider}. If this value is set, it supersedes 1152d06aee09507252ba6703ecd2c4f9f356048e6adshailendra * {@link #setPhotosUri(String)}. */ 1162d06aee09507252ba6703ecd2c4f9f356048e6adshailendra public PhotoViewIntentBuilder setResolvedPhotoUri(String resolvedPhotoUri) { 117f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mResolvedPhotoUri = resolvedPhotoUri; 118f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru return this; 119f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 120f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 121f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** 122f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru * Sets the URI for a thumbnail preview of the photo. 123f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru */ 124f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public PhotoViewIntentBuilder setThumbnailUri(String thumbnailUri) { 125f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mThumbnailUri = thumbnailUri; 126f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru return this; 127f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 128f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 129f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru /** Build the intent */ 130f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru public Intent build() { 131f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru if (TextUtils.isEmpty(mPhotosUri) && TextUtils.isEmpty(mResolvedPhotoUri)) { 132f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru throw new IllegalArgumentException( 133f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru "Either PhotosUri or ResolvedPhotoUri must be set."); 134f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 135f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 136f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mIntent.setAction(Intent.ACTION_VIEW); 137f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 138f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 139f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 140f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru if (mPhotoName != null) { 141f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mIntent.putExtra(EXTRA_PHOTO_NAME, mPhotoName); 142f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 143f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 144f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru if (mPhotoIndex != null) { 145f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mIntent.putExtra(EXTRA_PHOTO_INDEX, (int) mPhotoIndex); 1462d06aee09507252ba6703ecd2c4f9f356048e6adshailendra } 147f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 148f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru if (mPhotosUri != null) { 149f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mIntent.putExtra(EXTRA_PHOTOS_URI, mPhotosUri); 150f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 151f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 152f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru if (mResolvedPhotoUri != null) { 153f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mIntent.putExtra(EXTRA_RESOLVED_PHOTO_URI, mResolvedPhotoUri); 154f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 155f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 156f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru if (mProjection != null) { 157f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mIntent.putExtra(EXTRA_PROJECTION, mProjection); 158f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 159f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 160f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru if (mThumbnailUri != null) { 161f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru mIntent.putExtra(EXTRA_THUMBNAIL_URI, mThumbnailUri); 1622d06aee09507252ba6703ecd2c4f9f356048e6adshailendra } 163f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru 164f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru return mIntent; 165f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 166f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru } 167f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru} 168f1f9ff28c3acae5cb4eb309f28e7872aff35eff6Basavapatna Dattaguru