diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml
index 4a4a7c3..2449e06 100644
--- a/samples/ApiDemos/AndroidManifest.xml
+++ b/samples/ApiDemos/AndroidManifest.xml
@@ -816,8 +816,17 @@
             </intent-filter>
         </activity>
 
-        <activity android:name=".app.ActionBarActionProviderActivity"
-                android:label="@string/action_bar_action_provider"
+        <activity android:name=".app.ActionBarSettingsActionProviderActivity"
+                android:label="@string/action_bar_settings_action_provider"
+                android:enabled="@bool/atLeastIceCreamSandwich">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".app.ActionBarShareActionProviderActivity"
+                android:label="@string/action_bar_share_action_provider"
                 android:enabled="@bool/atLeastIceCreamSandwich">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/samples/ApiDemos/_index.html b/samples/ApiDemos/_index.html
index 002ca15..9466c95 100644
--- a/samples/ApiDemos/_index.html
+++ b/samples/ApiDemos/_index.html
@@ -20,9 +20,12 @@
 <p><strong>Update:</strong> The following are some of the new demos for Android 4.0:</p>
 <ul>
 <li><a
-href="src/com/example/android/apis/preference/PreferencesFromCode.html">SwitchPreference</a></li>
+href="src/com/example/android/apis/preference/PreferencesFromCode.html">Switch Preference</a></li>
 <li><a
-href="src/com/example/android/apis/app/ActionBarActionProviderActivity.html">ShareActionProvider
+href="src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.html">Settings Action Provider
+</a></li>
+<li><a
+href="src/com/example/android/apis/app/ActionBarShareActionProviderActivity.html">Share Action Provider
 </a></li>
 <li><a href="src/com/example/android/apis/view/SearchViewActionBar.html">Collapsible action
 view</a></li>
diff --git a/samples/ApiDemos/res/drawable-hdpi/ic_launcher_settings.png b/samples/ApiDemos/res/drawable-hdpi/ic_launcher_settings.png
new file mode 100644
index 0000000..c02bd42
--- /dev/null
+++ b/samples/ApiDemos/res/drawable-hdpi/ic_launcher_settings.png
Binary files differ
diff --git a/samples/ApiDemos/res/drawable-mdpi/ic_launcher_settings.png b/samples/ApiDemos/res/drawable-mdpi/ic_launcher_settings.png
new file mode 100644
index 0000000..05cdd9a
--- /dev/null
+++ b/samples/ApiDemos/res/drawable-mdpi/ic_launcher_settings.png
Binary files differ
diff --git a/samples/ApiDemos/res/drawable-xhdpi/ic_launcher_settings.png b/samples/ApiDemos/res/drawable-xhdpi/ic_launcher_settings.png
new file mode 100644
index 0000000..2b2907b
--- /dev/null
+++ b/samples/ApiDemos/res/drawable-xhdpi/ic_launcher_settings.png
Binary files differ
diff --git a/samples/ApiDemos/res/layout/action_bar_settings_action_provider.xml b/samples/ApiDemos/res/layout/action_bar_settings_action_provider.xml
new file mode 100644
index 0000000..dd9807b
--- /dev/null
+++ b/samples/ApiDemos/res/layout/action_bar_settings_action_provider.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="match_parent"
+    android:layout_gravity="center"
+    android:focusable="true"
+    android:addStatesFromChildren="true"
+    android:background="?android:attr/actionBarItemBackground"
+    style="?android:attr/actionButtonStyle">
+
+    <ImageButton android:id="@+id/button"
+        android:background="@drawable/ic_launcher_settings"
+        android:layout_width="32dip"
+        android:layout_height="32dip"
+        android:layout_gravity="center"
+        android:scaleType="fitCenter"
+        android:adjustViewBounds="true" />
+
+</LinearLayout>
diff --git a/samples/ApiDemos/res/menu/action_bar_settings_action_provider.xml b/samples/ApiDemos/res/menu/action_bar_settings_action_provider.xml
new file mode 100644
index 0000000..b72a7d1
--- /dev/null
+++ b/samples/ApiDemos/res/menu/action_bar_settings_action_provider.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 Google Inc.
+
+     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.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:id="@+id/menu_item_action_provider_action_bar"
+        android:showAsAction="ifRoom"
+        android:title="@string/action_bar_settings"
+        android:actionProviderClass="com.example.android.apis.app.ActionBarSettingsActionProviderActivity$SettingsActionProvider"/>
+
+    <item android:id="@+id/menu_item_action_provider_overflow"
+        android:showAsAction="never"
+        android:title="@string/action_bar_settings"
+        android:actionProviderClass="com.example.android.apis.app.ActionBarSettingsActionProviderActivity$SettingsActionProvider"/>
+
+</menu>
diff --git a/samples/ApiDemos/res/menu/action_bar_action_provider.xml b/samples/ApiDemos/res/menu/action_bar_share_action_provider.xml
similarity index 100%
rename from samples/ApiDemos/res/menu/action_bar_action_provider.xml
rename to samples/ApiDemos/res/menu/action_bar_share_action_provider.xml
diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml
index 45d4755..5a7183c 100644
--- a/samples/ApiDemos/res/values/strings.xml
+++ b/samples/ApiDemos/res/values/strings.xml
@@ -731,7 +731,9 @@
     <string name="action_bar_mechanics">App/Action Bar/Action Bar Mechanics</string>
     <string name="action_bar_usage">App/Action Bar/Action Bar Usage</string>
     <string name="action_bar_tabs">App/Action Bar/Action Bar Tabs</string>
-    <string name="action_bar_action_provider">App/Action Bar/Action Provider</string>
+    <string name="action_bar_settings_action_provider">App/Action Bar/Action Provider/Settings Action Provider</string>
+    <string name="action_bar_share_action_provider">App/Action Bar/Action Provider/Share Action Provider</string>
+    <string name="action_bar_settings_action_provider_no_handling">Handling in onOptionsItemSelected avoided</string>
 
     <string name="action_bar_search">Search</string>
     <string name="action_bar_add">Add</string>
@@ -741,6 +743,7 @@
     <string name="action_bar_sort_alpha">Alphabetically</string>
     <string name="action_bar_sort_size">By size</string>
     <string name="action_bar_share_with">Share with...</string>
+    <string name="action_bar_settings">Settings</string>
 
     <string name="action_bar_display_options">App/Action Bar/Display Options</string>
     <string name="toggle_home_as_up">DISPLAY_HOME_AS_UP</string>
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.java b/samples/ApiDemos/src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.java
new file mode 100644
index 0000000..2bf7c37
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.java
@@ -0,0 +1,121 @@
+/*
+ * 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.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.view.ActionProvider;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.ImageButton;
+import android.widget.Toast;
+
+import com.example.android.apis.R;
+
+/**
+ * This activity demonstrates how to implement an {@link android.view.ActionProvider}
+ * for adding functionality to the Action Bar. In particular this demo creates an
+ * ActionProvider for launching the system settings and adds a menu item with that
+ * provider.
+ */
+public class ActionBarSettingsActionProviderActivity extends Activity {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        super.onCreateOptionsMenu(menu);
+        getMenuInflater().inflate(R.menu.action_bar_settings_action_provider, menu);
+        return true;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        // If this callback does not handle the item click, onPerformDefaultAction
+        // of the ActionProvider is invoked. Hence, the provider encapsulates the
+        // complete functionality of the menu item.
+        Toast.makeText(this, R.string.action_bar_settings_action_provider_no_handling,
+                Toast.LENGTH_SHORT).show();
+        return false;
+    }
+
+    public static class SettingsActionProvider extends ActionProvider {
+
+        /** An intent for launching the system settings. */
+        private static final Intent sSettingsIntent = new Intent(Settings.ACTION_SETTINGS);
+
+        /** Context for accessing resources. */
+        private final Context mContext;
+
+        /**
+         * Creates a new instance.
+         *
+         * @param context Context for accessing resources.
+         */
+        public SettingsActionProvider(Context context) {
+            super(context);
+            mContext = context;
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public View onCreateActionView() {
+            // Inflate the action view to be shown on the action bar.
+            LayoutInflater layoutInflater = LayoutInflater.from(mContext);
+            View view = layoutInflater.inflate(R.layout.action_bar_settings_action_provider, null);
+            ImageButton button = (ImageButton) view.findViewById(R.id.button);
+            // Attach a click listener for launching the system settings.
+            button.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    mContext.startActivity(sSettingsIntent);
+                }
+            });
+            return view;
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public boolean onPerformDefaultAction() {
+            // This is called if the host menu item placed in the overflow menu of the
+            // action bar is clicked and the host activity did not handle the click.
+            mContext.startActivity(sSettingsIntent);
+            return true;
+        }
+    }
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/ActionBarActionProviderActivity.java b/samples/ApiDemos/src/com/example/android/apis/app/ActionBarShareActionProviderActivity.java
similarity index 96%
rename from samples/ApiDemos/src/com/example/android/apis/app/ActionBarActionProviderActivity.java
rename to samples/ApiDemos/src/com/example/android/apis/app/ActionBarShareActionProviderActivity.java
index 2d6bfd7..4f37b8d 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/ActionBarActionProviderActivity.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/ActionBarShareActionProviderActivity.java
@@ -38,7 +38,7 @@
  * 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 {
+public class ActionBarShareActionProviderActivity extends Activity {
 
     private static final String SHARED_FILE_NAME = "shared.png";
 
@@ -51,7 +51,7 @@
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         // Inflate your menu.
-        getMenuInflater().inflate(R.menu.action_bar_action_provider, menu);
+        getMenuInflater().inflate(R.menu.action_bar_share_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);
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/_index.html b/samples/ApiDemos/src/com/example/android/apis/app/_index.html
index 4333d57..9400bc9 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/_index.html
+++ b/samples/ApiDemos/src/com/example/android/apis/app/_index.html
@@ -160,10 +160,12 @@
 default Honeycomb theme includes the Action Bar by default and a menu resource is used to populate
 the menu data itself. If you'd like to see how these things work under the hood, see
 Mechanics.</dd>
-  <dt><a href="ActionBarActionProviderActivity.html">ActionProvider</a></dt>
-  <dd>Shows how to use an ActionProvider to supply a menu item with a specialized action view and
-  handle standard menu item clicks in one place. Demonstrated using the streamlined sharing UI
-  added in ICS. </dd>
+  <dt><a href="ActionBarActionProviderSettingsActivity.html">Settings Action Provider</a></dt>
+  <dd>Shows how to implement an ActionProvider for launching the system settings that supplies a
+  menu item with a specialized action view and handles standard menu item clicks in one place.</dd>
+  <dt><a href="ActionBarShareActionProviderActivity.html">Share Action Provider</a></dt>
+  <dd>Shows how to use a ShareActionProvider to embed sharing functionality in your application
+  via the streamlined sharing UI added in ICS. </dd>
   <dt><a href="ActionBarDisplayOptions.html">Display Options</a></dt>
   <dd>Shows how various Action Bar display option flags can be combined and their effects.</dd>
 </dl>
