summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorPauloftheWest <paulofthewest@google.com>2014-07-11 23:36:04 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-07-10 21:35:02 +0000
commitcc4e973d72a16a587b3f8dc4ddedc77ad150a7bc (patch)
tree28066ab67678bc69345de1bc18482fcb5a1aa28b /src/com
parent36d2bdadddf1e16e93584ef0d1d318da080ec154 (diff)
parentc9dc66d6059a5bcc867ab2046c59f969a13c46d7 (diff)
downloadpackages_apps_Settings-cc4e973d72a16a587b3f8dc4ddedc77ad150a7bc.tar.gz
packages_apps_Settings-cc4e973d72a16a587b3f8dc4ddedc77ad150a7bc.tar.bz2
packages_apps_Settings-cc4e973d72a16a587b3f8dc4ddedc77ad150a7bc.zip
Merge "Add BT message access"
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/settings/SettingsActivity.java2
-rwxr-xr-xsrc/com/android/settings/bluetooth/BluetoothSettings.java21
-rw-r--r--src/com/android/settings/bluetooth/MessageAccessSettings.java166
-rw-r--r--src/com/android/settings/search/Ranking.java2
-rw-r--r--src/com/android/settings/search/SearchIndexableResources.java8
5 files changed, 194 insertions, 5 deletions
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index b0d324109..4675bb221 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -76,6 +76,7 @@ import com.android.settings.applications.InstalledAppDetails;
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 @@ public class SettingsActivity extends Activity
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 f329c3d6d..8eee272d7 100755
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -18,8 +18,6 @@ package com.android.settings.bluetooth;
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.PreferenceCategory;
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 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
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 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
.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 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
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 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
getActivity().invalidateOptionsMenu();
}
+ @Override
public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
setDeviceListGroup(getPreferenceScreen());
removeAllDevices();
@@ -433,5 +445,4 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
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 000000000..bef59c816
--- /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 0d53d85c2..fbb6f995a 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.WallpaperTypeSettings;
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 @@ public final class Ranking {
// 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 4e35a7267..0a3ec2ae0 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.WallpaperTypeSettings;
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 @@ public final class SearchIndexableResources {
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()),