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