diff --git a/res/values/strings.xml b/res/values/strings.xml
index b52f40d..8663972 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -306,6 +306,8 @@
     <string name="bluetooth_notif_message">Touch to pair with <xliff:g id="device_name">%1$s</xliff:g>.</string>
     <!-- Bluetooth settings screen, menu to show the list of received files [CHAR LIMIT=30] -->
     <string name="bluetooth_show_received_files">Show received files</string>
+    <!-- Bluetooth settings screen, menu to show the list of email accounts to pull messages from [CHAR LIMIT=30] -->
+    <string name="bluetooth_show_message_access">Message access</string>
 
     <!-- Strings for BluetoothDevicePicker -->
     <string name="device_picker">Bluetooth device chooser</string>
@@ -316,6 +318,8 @@
     <!-- Strings for asking to the user whether to allow an app to enable bluetooth -->
     <string name="bluetooth_ask_enablement">An app wants to turn on Bluetooth.</string>
 
+    <!-- String for informing the user that bluetooth devices must be granted permission. [CHAR LIMIT=100] -->
+    <string name="bluetooth_message_access_notice">Bluetooth devices must ask for permission before accessing available accounts.</string>
     <!-- Strings for asking to the user whether to allow an app to enable discovery mode -->
     <string name="bluetooth_ask_discovery" product="tablet">An app wants to make your tablet visible to other Bluetooth devices for <xliff:g id="timeout">%1$d</xliff:g> seconds.</string>
     <!-- Strings for asking to the user whether to allow an app to enable discovery mode -->
@@ -1106,6 +1110,8 @@
     <string name="bluetooth_preference_device_settings">Device settings</string>
     <!-- Bluetooth settings: The sub heading for devices which have already been paired with this device. [CHAR LIMIT=40] -->
     <string name="bluetooth_preference_paired_devices">Paired devices</string>
+    <!-- Bluetooth settings: The sub heading for messaging accesses. [CHAR LIMIT=50] -->
+    <string name="bluetooth_message_access">Paired devices can view messages from</string>
     <!-- Bluetooth settings: The sub heading for available devices during and after scanning. [CHAR LIMIT=40] -->
     <string name="bluetooth_preference_found_devices">Available devices</string>
     <!-- Bluetooth settings.  Context menu item for a device.  Action will connect to all profiles on the device. -->
diff --git a/res/xml/bluetooth_message_access.xml b/res/xml/bluetooth_message_access.xml
new file mode 100644
index 0000000..d1da132
--- /dev/null
+++ b/res/xml/bluetooth_message_access.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/bluetooth_show_message_access">
+
+    <PreferenceCategory
+            android:key="accounts"
+            android:title="@string/bluetooth_message_access" />
+
+    <Preference
+            android:key="notice"
+            android:title=""
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textColor="?android:attr/colorForegroundInverse"
+            android:selectable="false"
+            android:summary="@string/bluetooth_message_access_notice" />
+
+</PreferenceScreen>
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index b0d3241..4675bb2 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -76,6 +76,7 @@
 import com.android.settings.applications.ManageApplications;
 import com.android.settings.applications.ProcessStatsUi;
 import com.android.settings.bluetooth.BluetoothSettings;
+import com.android.settings.bluetooth.MessageAccessSettings;
 import com.android.settings.dashboard.DashboardCategory;
 import com.android.settings.dashboard.DashboardSummary;
 import com.android.settings.dashboard.DashboardTile;
@@ -237,6 +238,7 @@
             AdvancedWifiSettings.class.getName(),
             SavedAccessPointsWifiSettings.class.getName(),
             BluetoothSettings.class.getName(),
+            MessageAccessSettings.class.getName(),
             TetherSettings.class.getName(),
             WifiP2pSettings.class.getName(),
             VpnSettings.class.getName(),
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index f329c3d..8eee272 100755
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -18,8 +18,6 @@
 
 import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
 
-import android.app.ActionBar;
-import android.app.Activity;
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
 import android.content.BroadcastReceiver;
@@ -33,12 +31,10 @@
 import android.preference.PreferenceGroup;
 import android.preference.PreferenceScreen;
 import android.util.Log;
-import android.view.Gravity;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
-import android.widget.Switch;
 import android.widget.TextView;
 
 import com.android.settings.R;
@@ -63,6 +59,7 @@
     private static final int MENU_ID_RENAME_DEVICE = Menu.FIRST + 1;
     private static final int MENU_ID_VISIBILITY_TIMEOUT = Menu.FIRST + 2;
     private static final int MENU_ID_SHOW_RECEIVED = Menu.FIRST + 3;
+    private static final int MENU_ID_MESSAGE_ACCESS = Menu.FIRST + 4;
 
     /* Private intent to show the list of received files */
     private static final String BTOPP_ACTION_OPEN_RECEIVED_FILES =
@@ -187,6 +184,12 @@
                 .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
         menu.add(Menu.NONE, MENU_ID_SHOW_RECEIVED, 0, R.string.bluetooth_show_received_files)
                 .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+        // Message Access API is still not finished, once completed we undo this check.
+        // Bug 16232864
+        if (android.os.SystemProperties.get("show_bluetooth_message_access").equals("true")){
+            menu.add(Menu.NONE, MENU_ID_MESSAGE_ACCESS, 0, R.string.bluetooth_show_message_access)
+                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+        }
         super.onCreateOptionsMenu(menu, inflater);
     }
 
@@ -213,6 +216,14 @@
                 Intent intent = new Intent(BTOPP_ACTION_OPEN_RECEIVED_FILES);
                 getActivity().sendBroadcast(intent);
                 return true;
+
+            case MENU_ID_MESSAGE_ACCESS:
+                if (getActivity() instanceof SettingsActivity) {
+                    ((SettingsActivity) getActivity()).startPreferencePanel(
+                            MessageAccessSettings.class.getCanonicalName(), null,
+                            R.string.bluetooth_show_message_access, null, this, 0);
+                }
+                return true;
         }
         return super.onOptionsItemSelected(item);
     }
@@ -355,6 +366,7 @@
         getActivity().invalidateOptionsMenu();
     }
 
+    @Override
     public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
         setDeviceListGroup(getPreferenceScreen());
         removeAllDevices();
@@ -433,5 +445,4 @@
                 return result;
             }
         };
-
 }
diff --git a/src/com/android/settings/bluetooth/MessageAccessSettings.java b/src/com/android/settings/bluetooth/MessageAccessSettings.java
new file mode 100644
index 0000000..bef59c8
--- /dev/null
+++ b/src/com/android/settings/bluetooth/MessageAccessSettings.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2014 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.android.settings.bluetooth;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.app.ActivityManagerNative;
+import android.content.Context;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.preference.SwitchPreference;
+import android.preference.Preference;
+import android.preference.PreferenceGroup;
+import android.preference.PreferenceScreen;
+import android.provider.SearchIndexableResource;
+import android.util.Log;
+
+import com.android.settings.accounts.AuthenticatorHelper;
+import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.Utils;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MessageAccessSettings extends SettingsPreferenceFragment
+        implements AuthenticatorHelper.OnAccountsUpdateListener, Indexable {
+    private static final String TAG = "MessageAccessSettings";
+    private static final String GMAIL_PACKAGE_NAME = "com.google.android.gm";
+    private static final String EMAIL_PACKAGE_NAME = "com.google.android.email";
+
+    private Account[] mAccounts;
+    private UserHandle mUserHandle;
+    private PreferenceGroup mAvailableAccounts;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mUserHandle = Utils.getProfileToDisplay(ActivityManagerNative.getDefault(),
+                getActivity().getActivityToken(), savedInstanceState);
+
+        addPreferencesFromResource(R.xml.bluetooth_message_access);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        initPreferences();
+    }
+
+    @Override
+    public void onAccountsUpdate(final UserHandle userHandle) {
+        mAccounts = AccountManager.get(getActivity()).getAccountsAsUser(
+                mUserHandle.getIdentifier());
+
+        final int mAccountsSize = mAccounts.length;
+        for (int i = 0; i < mAccountsSize; ++i){
+            Log.d(TAG, String.format("account.type = %s\n", mAccounts[i].type));
+        }
+    }
+
+    /**
+     * Retrieves the email icon for a given account's email preference
+     *
+     * @param accountPref The user's account to retrieve the icon from.
+     *
+     * @return The drawable representing the icon of the user's email preference
+     **/
+    private Drawable getIcon(AccountPreference accountPref){
+        Drawable icon = null;
+
+        // Currently only two types of icons are allowed.
+        final String packageName = accountPref.account.type.equals("com.google")
+                ? GMAIL_PACKAGE_NAME : EMAIL_PACKAGE_NAME;
+
+        try{
+            icon = getPackageManager().getApplicationIcon(packageName);
+        }catch(NameNotFoundException nnfe){
+            icon = null;
+        }
+
+        return icon;
+    }
+
+    private void initPreferences() {
+        final PreferenceScreen preferenceScreen = getPreferenceScreen();
+        mAvailableAccounts = (PreferenceGroup)preferenceScreen.findPreference("accounts");
+        mAccounts = AccountManager.get(getActivity()).getAccountsAsUser(
+                mUserHandle.getIdentifier());
+
+        final int mAccountsSize = mAccounts.length;
+        for (int i = 0; i < mAccountsSize; ++i){
+            AccountPreference accountPref = new AccountPreference(getActivity(), mAccounts[i]);
+            Drawable icon = getIcon(accountPref);
+            if (icon != null){
+                accountPref.setIcon(icon);
+            }
+            mAvailableAccounts.addPreference(accountPref);
+        }
+    }
+
+    private class AccountPreference extends SwitchPreference
+            implements Preference.OnPreferenceChangeListener{
+        private Account account;
+
+        AccountPreference(Context context, Account account){
+            super(context);
+            this.account = account;
+            setTitle(account.type);
+            setSummary(account.name);
+
+            setOnPreferenceChangeListener(this);
+        }
+
+        @Override
+        public boolean onPreferenceChange(Preference preference, Object val) {
+            if (preference instanceof AccountPreference){
+                final AccountPreference accountPref = (AccountPreference) preference;
+
+                if (((Boolean)val).booleanValue()){
+                    // Enable paired deviced to connect, fill in once API is available
+                    Log.w(TAG, String.format(
+                                "User has turned on '%s' for Bluetooth message access.",
+                                accountPref.account.name));
+                } else {
+                    // Disable paired deviced to connect, fill in once API is available
+                    Log.w(TAG, String.format(
+                                "User has turned off '%s' for Bluetooth message access.",
+                                accountPref.account.name));
+                }
+            }
+            return true;
+        }
+    }
+
+    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+        new BaseSearchIndexProvider() {
+            @Override
+            public List<SearchIndexableResource> getXmlResourcesToIndex(
+                    Context context, boolean enabled) {
+                List<SearchIndexableResource> indexables = new ArrayList<SearchIndexableResource>();
+                SearchIndexableResource indexable = new SearchIndexableResource(context);
+                indexable.xmlResId = R.xml.bluetooth_message_access;
+                indexables.add(indexable);
+                return indexables;
+            }
+        };
+}
diff --git a/src/com/android/settings/search/Ranking.java b/src/com/android/settings/search/Ranking.java
index 0d53d85..fbb6f99 100644
--- a/src/com/android/settings/search/Ranking.java
+++ b/src/com/android/settings/search/Ranking.java
@@ -30,6 +30,7 @@
 import com.android.settings.WirelessSettings;
 import com.android.settings.accessibility.AccessibilitySettings;
 import com.android.settings.bluetooth.BluetoothSettings;
+import com.android.settings.bluetooth.MessageAccessSettings;
 import com.android.settings.deviceinfo.Memory;
 import com.android.settings.fuelgauge.BatterySaverSettings;
 import com.android.settings.fuelgauge.PowerUsageSummary;
@@ -90,6 +91,7 @@
 
         // BT
         sRankMap.put(BluetoothSettings.class.getName(), RANK_BT);
+        sRankMap.put(MessageAccessSettings.class.getName(), RANK_BT);
 
         // DataUsage
         sRankMap.put(DataUsageSummary.class.getName(), RANK_DATA_USAGE);
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index 4e35a72..0a3ec2a 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -33,6 +33,7 @@
 import com.android.settings.WirelessSettings;
 import com.android.settings.accessibility.AccessibilitySettings;
 import com.android.settings.bluetooth.BluetoothSettings;
+import com.android.settings.bluetooth.MessageAccessSettings;
 import com.android.settings.deviceinfo.Memory;
 import com.android.settings.fuelgauge.BatterySaverSettings;
 import com.android.settings.fuelgauge.PowerUsageSummary;
@@ -87,6 +88,13 @@
                         BluetoothSettings.class.getName(),
                         R.drawable.ic_settings_bluetooth2));
 
+        sResMap.put(MessageAccessSettings.class.getName(),
+                new SearchIndexableResource(
+                        Ranking.getRankForClassName(MessageAccessSettings.class.getName()),
+                        NO_DATA_RES_ID,
+                        MessageAccessSettings.class.getName(),
+                        R.drawable.ic_settings_bluetooth2));
+
         sResMap.put(DataUsageSummary.class.getName(),
                 new SearchIndexableResource(
                         Ranking.getRankForClassName(DataUsageSummary.class.getName()),
