/* * 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.actionbarcompat.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; public final String contentAssetFilePath; /** * 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; contentAssetFilePath = 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; contentAssetFilePath = assetFilePath; contentResourceId = 0; } /** * @return Uri to the content */ public Uri getContentUri() { if (!TextUtils.isEmpty(contentAssetFilePath)) { // If this content has an asset, then return a AssetProvider Uri return Uri.parse("content://" + AssetProvider.CONTENT_URI + "/" + contentAssetFilePath); } 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; } }