From ddece2d84d1fb7f14428d1db3fcac267121bc1e3 Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Thu, 14 Jul 2011 16:25:57 -0700 Subject: [PATCH] Adding ActionProvider demo. Change-Id: If0f540cd796ced27f392f1c31d20ab5ab34e5c3e --- samples/ApiDemos/AndroidManifest.xml | 9 +++ .../res/menu/action_bar_action_provider.xml | 28 +++++++ samples/ApiDemos/res/values/bools.xml | 6 ++ samples/ApiDemos/res/values/strings.xml | 2 + .../app/ActionBarActionProviderActivity.java | 78 +++++++++++++++++++ 5 files changed, 123 insertions(+) create mode 100644 samples/ApiDemos/res/menu/action_bar_action_provider.xml create mode 100644 samples/ApiDemos/src/com/example/android/apis/app/ActionBarActionProviderActivity.java diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml index a588418b1..1fcf7ee44 100644 --- a/samples/ApiDemos/AndroidManifest.xml +++ b/samples/ApiDemos/AndroidManifest.xml @@ -799,6 +799,15 @@ + + + + + + + diff --git a/samples/ApiDemos/res/menu/action_bar_action_provider.xml b/samples/ApiDemos/res/menu/action_bar_action_provider.xml new file mode 100644 index 000000000..7633f9ff5 --- /dev/null +++ b/samples/ApiDemos/res/menu/action_bar_action_provider.xml @@ -0,0 +1,28 @@ + + + + + + + + + diff --git a/samples/ApiDemos/res/values/bools.xml b/samples/ApiDemos/res/values/bools.xml index 266c8cacc..5d2eaa0c3 100644 --- a/samples/ApiDemos/res/values/bools.xml +++ b/samples/ApiDemos/res/values/bools.xml @@ -23,4 +23,10 @@ API level. The default value is false; an alternative value for Honeycomb MR2 is true. --> false + + + true + diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml index 8950bb75d..c87c56394 100644 --- a/samples/ApiDemos/res/values/strings.xml +++ b/samples/ApiDemos/res/values/strings.xml @@ -722,6 +722,7 @@ App/Action Bar/Action Bar Mechanics App/Action Bar/Action Bar Usage App/Action Bar/Action Bar Tabs + App/Action Bar/Action Provider Search Add @@ -730,6 +731,7 @@ Sort Alphabetically By size + Share with... App/Action Bar/Display Options DISPLAY_HOME_AS_UP diff --git a/samples/ApiDemos/src/com/example/android/apis/app/ActionBarActionProviderActivity.java b/samples/ApiDemos/src/com/example/android/apis/app/ActionBarActionProviderActivity.java new file mode 100644 index 000000000..44bc0df55 --- /dev/null +++ b/samples/ApiDemos/src/com/example/android/apis/app/ActionBarActionProviderActivity.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2011 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.apis.app; + +import android.app.Activity; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; +import android.widget.ShareActionProvider; + +import java.io.File; + +import com.example.android.apis.R; + +/** + * This activity demonstrates how to use an {@link android.view.ActionProvider} + * for adding functionality to the Action Bar. In particular this demo is adding + * a menu item with ShareActionProvider as its action provider. The + * ShareActionProvider is responsible for managing the UI for sharing actions. + */ +public class ActionBarActionProviderActivity extends Activity { + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate your menu. + getMenuInflater().inflate(R.menu.action_bar_action_provider, menu); + + // Set file with share history to the provider and set the share intent. + MenuItem actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar); + ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider(); + actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); + actionProvider.setShareIntent(createShareIntent()); + + // Set file with share history to the provider and set the share intent. + MenuItem overflowItem = menu.findItem(R.id.menu_item_share_action_provider_overflow); + ShareActionProvider overflowProvider = + (ShareActionProvider) overflowItem.getActionProvider(); + overflowProvider.setShareHistoryFileName( + ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); + overflowProvider.setShareIntent(createShareIntent()); + + return true; + } + + /** + * Creates a sharing {@link Intent}. + * + * @return The sharing intent. + */ + private Intent createShareIntent() { + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType("image/*"); + Uri uri = Uri.fromFile(new File(getFilesDir(), "SomeFileToShare")); + shareIntent.putExtra(Intent.EXTRA_STREAM, uri.toString()); + return shareIntent; + } +}