summaryrefslogtreecommitdiffstats
path: root/samples/browseable/ShareActionProvider/src/com.example.android.shareactionprovider/content/ContentItem.java
diff options
context:
space:
mode:
Diffstat (limited to 'samples/browseable/ShareActionProvider/src/com.example.android.shareactionprovider/content/ContentItem.java')
-rw-r--r--samples/browseable/ShareActionProvider/src/com.example.android.shareactionprovider/content/ContentItem.java101
1 files changed, 101 insertions, 0 deletions
diff --git a/samples/browseable/ShareActionProvider/src/com.example.android.shareactionprovider/content/ContentItem.java b/samples/browseable/ShareActionProvider/src/com.example.android.shareactionprovider/content/ContentItem.java
new file mode 100644
index 000000000..5806088b7
--- /dev/null
+++ b/samples/browseable/ShareActionProvider/src/com.example.android.shareactionprovider/content/ContentItem.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.shareactionprovider.content;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.text.TextUtils;
+
+/**
+ * This class encapsulates a content item. Referencing the content's type, and the differing way
+ * to reference the content (asset URI or resource id).
+ */
+public class ContentItem {
+ // Used to signify an image content type
+ public static final int CONTENT_TYPE_IMAGE = 0;
+ // Used to signify a text/string content type
+ public static final int CONTENT_TYPE_TEXT = 1;
+
+ public final int contentType;
+ public final int contentResourceId;
+ private final String mContentAssetFilePath;
+
+ /**
+ * Creates a ContentItem with the specified type, referencing a resource id.
+ *
+ * @param type - One of {@link #CONTENT_TYPE_IMAGE} or {@link #CONTENT_TYPE_TEXT}
+ * @param resourceId - Resource ID to use for this item's content
+ */
+ public ContentItem(int type, int resourceId) {
+ contentType = type;
+ contentResourceId = resourceId;
+ mContentAssetFilePath = null;
+ }
+
+ /**
+ * Creates a ContentItem with the specified type, referencing an asset file path.
+ *
+ * @param type - One of {@link #CONTENT_TYPE_IMAGE} or {@link #CONTENT_TYPE_TEXT}
+ * @param assetFilePath - File path from the application's asset for this item's content
+ */
+ public ContentItem(int type, String assetFilePath) {
+ contentType = type;
+ mContentAssetFilePath = assetFilePath;
+ contentResourceId = 0;
+ }
+
+ /**
+ * @return Uri to the content
+ */
+ public Uri getContentUri() {
+ if (!TextUtils.isEmpty(mContentAssetFilePath)) {
+ // If this content has an asset, then return a AssetProvider Uri
+ return Uri.parse("content://" + AssetProvider.CONTENT_URI + "/" + mContentAssetFilePath);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Returns an {@link android.content.Intent} which can be used to share this item's content with other
+ * applications.
+ *
+ * @param context - Context to be used for fetching resources if needed
+ * @return Intent to be given to a ShareActionProvider.
+ */
+ public Intent getShareIntent(Context context) {
+ Intent intent = new Intent(Intent.ACTION_SEND);
+
+ switch (contentType) {
+ case CONTENT_TYPE_IMAGE:
+ intent.setType("image/jpg");
+ // Bundle the asset content uri as the EXTRA_STREAM uri
+ intent.putExtra(Intent.EXTRA_STREAM, getContentUri());
+ break;
+
+ case CONTENT_TYPE_TEXT:
+ intent.setType("text/plain");
+ // Get the string resource and bundle it as an intent extra
+ intent.putExtra(Intent.EXTRA_TEXT, context.getString(contentResourceId));
+ break;
+ }
+
+ return intent;
+ }
+
+}