Merge "[SetupWizard] Refactor WifiSetupActivity"
diff --git a/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg
index 428b2f4..8d330ce 100644
--- a/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg
+++ b/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-hdpi/setup_illustration_lock_screen.jpg b/res/drawable-hdpi/setup_illustration_lock_screen.jpg
index db697a0..0bf53fc 100644
--- a/res/drawable-hdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-hdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-hdpi/setup_illustration_tile.jpg b/res/drawable-hdpi/setup_illustration_tile.jpg
index 9931a23..d518abd 100644
--- a/res/drawable-hdpi/setup_illustration_tile.jpg
+++ b/res/drawable-hdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-hdpi/setup_illustration_wifi.jpg b/res/drawable-hdpi/setup_illustration_wifi.jpg
index d38551e..f2b9c6a 100644
--- a/res/drawable-hdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-hdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg
index 52e7993..2b9b04b 100644
--- a/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg
+++ b/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_lock_screen.jpg b/res/drawable-mdpi/setup_illustration_lock_screen.jpg
index 95e2b8c..9ab9117 100644
--- a/res/drawable-mdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-mdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_tile.jpg b/res/drawable-mdpi/setup_illustration_tile.jpg
index 7923fb4..f2e1bcb 100644
--- a/res/drawable-mdpi/setup_illustration_tile.jpg
+++ b/res/drawable-mdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_wifi.jpg b/res/drawable-mdpi/setup_illustration_wifi.jpg
index a497bf5..7f5e788 100644
--- a/res/drawable-mdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-mdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-hdpi/setup_illustration_lock_screen.jpg b/res/drawable-sw600dp-hdpi/setup_illustration_lock_screen.jpg
index 03cd9d9..26cff1d 100644
--- a/res/drawable-sw600dp-hdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-sw600dp-hdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-hdpi/setup_illustration_wifi.jpg b/res/drawable-sw600dp-hdpi/setup_illustration_wifi.jpg
index fccea72..7359f56 100644
--- a/res/drawable-sw600dp-hdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-sw600dp-hdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-mdpi/setup_illustration_lock_screen.jpg b/res/drawable-sw600dp-mdpi/setup_illustration_lock_screen.jpg
index 4a7ab38..386fc8d 100644
--- a/res/drawable-sw600dp-mdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-sw600dp-mdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-mdpi/setup_illustration_wifi.jpg b/res/drawable-sw600dp-mdpi/setup_illustration_wifi.jpg
index f21dffb..9b13e51 100644
--- a/res/drawable-sw600dp-mdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-sw600dp-mdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xhdpi/setup_illustration_lock_screen.jpg b/res/drawable-sw600dp-xhdpi/setup_illustration_lock_screen.jpg
index 05f7725..54362e7 100644
--- a/res/drawable-sw600dp-xhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-sw600dp-xhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xhdpi/setup_illustration_wifi.jpg b/res/drawable-sw600dp-xhdpi/setup_illustration_wifi.jpg
index 3d1b3f3..dc9e385 100644
--- a/res/drawable-sw600dp-xhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-sw600dp-xhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xxhdpi/setup_illustration_lock_screen.jpg b/res/drawable-sw600dp-xxhdpi/setup_illustration_lock_screen.jpg
index da3f7d9..4f62b84 100644
--- a/res/drawable-sw600dp-xxhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-sw600dp-xxhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xxhdpi/setup_illustration_wifi.jpg b/res/drawable-sw600dp-xxhdpi/setup_illustration_wifi.jpg
index 6a590b7..b57bc17 100644
--- a/res/drawable-sw600dp-xxhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-sw600dp-xxhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xxxhdpi/setup_illustration_lock_screen.jpg b/res/drawable-sw600dp-xxxhdpi/setup_illustration_lock_screen.jpg
index fd5da99..2c6b57e 100644
--- a/res/drawable-sw600dp-xxxhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-sw600dp-xxxhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xxxhdpi/setup_illustration_wifi.jpg b/res/drawable-sw600dp-xxxhdpi/setup_illustration_wifi.jpg
index d6f2f82..b940a9b 100644
--- a/res/drawable-sw600dp-xxxhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-sw600dp-xxxhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg
index 2733f8e..ae67f38 100644
--- a/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg
+++ b/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_lock_screen.jpg b/res/drawable-xhdpi/setup_illustration_lock_screen.jpg
index b6b856e..ddad6d5 100644
--- a/res/drawable-xhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-xhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_tile.jpg b/res/drawable-xhdpi/setup_illustration_tile.jpg
index 57bccca..8beeda8 100644
--- a/res/drawable-xhdpi/setup_illustration_tile.jpg
+++ b/res/drawable-xhdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_wifi.jpg b/res/drawable-xhdpi/setup_illustration_wifi.jpg
index a399c19..19478aa 100644
--- a/res/drawable-xhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-xhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg
index aec8d0f..18b885d 100644
--- a/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg
+++ b/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_lock_screen.jpg b/res/drawable-xxhdpi/setup_illustration_lock_screen.jpg
index 4cb0c63..5b0a7a7 100644
--- a/res/drawable-xxhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-xxhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_tile.jpg b/res/drawable-xxhdpi/setup_illustration_tile.jpg
index 2ba33fa..05d4804 100644
--- a/res/drawable-xxhdpi/setup_illustration_tile.jpg
+++ b/res/drawable-xxhdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_wifi.jpg b/res/drawable-xxhdpi/setup_illustration_wifi.jpg
index a27c93e..a28052b 100644
--- a/res/drawable-xxhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-xxhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg
index 448a651..6d97626 100644
--- a/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg
+++ b/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/setup_illustration_lock_screen.jpg b/res/drawable-xxxhdpi/setup_illustration_lock_screen.jpg
index 13821f3..5be34fd 100644
--- a/res/drawable-xxxhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-xxxhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/setup_illustration_tile.jpg b/res/drawable-xxxhdpi/setup_illustration_tile.jpg
index 4e67026..9d5c4c9 100644
--- a/res/drawable-xxxhdpi/setup_illustration_tile.jpg
+++ b/res/drawable-xxxhdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/setup_illustration_wifi.jpg b/res/drawable-xxxhdpi/setup_illustration_wifi.jpg
index 56c19b6..f2187cb 100644
--- a/res/drawable-xxxhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-xxxhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable/wifi_signal_colored.xml b/res/drawable/wifi_signal_colored.xml
index 4eb41c0..91f8b88 100644
--- a/res/drawable/wifi_signal_colored.xml
+++ b/res/drawable/wifi_signal_colored.xml
@@ -20,22 +20,22 @@
         <level-list>
             <item android:maxLevel="0">
                 <bitmap
-                    android:src="@drawable/ic_wifi_lock_signal_1_light"
+                    android:src="@drawable/ic_wifi_lock_signal_1_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="1">
                 <bitmap
-                    android:src="@drawable/ic_wifi_lock_signal_2_light"
+                    android:src="@drawable/ic_wifi_lock_signal_2_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="2">
                 <bitmap
-                    android:src="@drawable/ic_wifi_lock_signal_3_light"
+                    android:src="@drawable/ic_wifi_lock_signal_3_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="3">
                 <bitmap
-                    android:src="@drawable/ic_wifi_lock_signal_4_light"
+                    android:src="@drawable/ic_wifi_lock_signal_4_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
         </level-list>
@@ -44,22 +44,22 @@
         <level-list>
             <item android:maxLevel="0">
                 <bitmap
-                    android:src="@drawable/ic_wifi_signal_1_light"
+                    android:src="@drawable/ic_wifi_signal_1_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="1">
                 <bitmap
-                    android:src="@drawable/ic_wifi_signal_2_light"
+                    android:src="@drawable/ic_wifi_signal_2_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="2">
                 <bitmap
-                    android:src="@drawable/ic_wifi_signal_3_light"
+                    android:src="@drawable/ic_wifi_signal_3_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="3">
                 <bitmap
-                    android:src="@drawable/ic_wifi_signal_4_light"
+                    android:src="@drawable/ic_wifi_signal_4_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
         </level-list>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index dd7382f..e9da7fe 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -47,8 +47,8 @@
     <color name="setup_lock_pattern_view_success_color_light">@color/suw_color_accent_light</color>
     <color name="setup_lock_pattern_view_error_color_dark">#fff44336</color>
     <color name="setup_lock_pattern_view_error_color_light">@color/lock_pattern_view_error_color</color>
-    <color name="setup_wizard_wifi_color_dark">#ff00e4ff</color>
-    <color name="setup_wizard_wifi_color_light">#ff0096a6</color>
+    <color name="setup_wizard_wifi_color_dark">#ff448aff</color>
+    <color name="setup_wizard_wifi_color_light">#ff3367d6</color>
 
     <color name="lock_pattern_background">#00000000</color>
     <color name="lock_pattern_view_regular_color">#ff37474f</color>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 0d28126..2c900bb 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -41,7 +41,7 @@
         <item name="setup_divider_color">@color/setup_divider_color_dark</item>
         <item name="side_margin">0dip</item>
         <item name="wifi_signal_color">@color/setup_wizard_wifi_color_dark</item>
-        <item name="wifi_signal">@drawable/wifi_signal_teal</item>
+        <item name="wifi_signal">@drawable/wifi_signal_colored</item>
         <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
 
         <!-- LockPatternView colors -->
@@ -62,7 +62,7 @@
         <item name="setup_divider_color">@color/setup_divider_color_light</item>
         <item name="side_margin">0dip</item>
         <item name="wifi_signal_color">@color/setup_wizard_wifi_color_light</item>
-        <item name="wifi_signal">@drawable/wifi_signal_teal</item>
+        <item name="wifi_signal">@drawable/wifi_signal_colored</item>
         <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
 
         <!-- LockPatternView colors -->
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java
index 68cfb60..1b32b86 100644
--- a/src/com/android/settings/ApnSettings.java
+++ b/src/com/android/settings/ApnSettings.java
@@ -146,7 +146,7 @@
             setHasOptionsMenu(true);
         }
 
-        mSubscriptionInfo = Utils.findRecordBySubId(activity, subId);
+        mSubscriptionInfo = SubscriptionManager.from(activity).getActiveSubscriptionInfo(subId);
     }
 
     @Override
diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index 6e72ef7..27a486c 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -717,9 +717,9 @@
 
         int simCount = mTelephonyManager.getSimCount();
 
-        for (int i = 0; i < simCount; i++) {
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(context, i);
-            if (sir != null) {
+        List<SubscriptionInfo> sirs = mSubscriptionManager.getActiveSubscriptionInfoList();
+        if (sirs != null) {
+            for (SubscriptionInfo sir : sirs) {
                 addMobileTab(context, sir, (simCount > 1));
             }
         }
@@ -880,8 +880,8 @@
         if (mCurrentTab != null && mCurrentTab.length() > TAB_MOBILE.length() ){
             final int slotId = Integer.parseInt(mCurrentTab.substring(TAB_MOBILE.length(),
                     mCurrentTab.length()));
-            final SubscriptionInfo sir = com.android.settings.Utils.findRecordBySlotId(context,
-                    slotId);
+            final SubscriptionInfo sir = mSubscriptionManager
+                    .getActiveSubscriptionInfoForSimSlotIndex(slotId);
 
             if (sir != null) {
                 seriesColor = sir.getIconTint();
@@ -1245,8 +1245,7 @@
             return;
         }
 
-        final SubscriptionInfo nextSir = mSubscriptionManager.getActiveSubscriptionInfo(
-                mSubscriptionManager.getDefaultDataSubId());
+        final SubscriptionInfo nextSir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
 
         // If the device is single SIM or is enabling data on the active data SIM then forgo
         // the pop-up.
@@ -2784,22 +2783,7 @@
             return -1;
         }
 
-        //SUB SELECT
-        private boolean isMobileDataAvailable(long subId) {
-            int[] subIds = SubscriptionManager.getSubId(PhoneConstants.SUB1);
-            if (subIds != null && subIds[0] == subId) {
-                return true;
-            }
-
-            subIds = SubscriptionManager.getSubId(PhoneConstants.SUB2);
-            if (subIds != null && subIds[0] == subId) {
-                return true;
-            }
-
-            subIds = SubscriptionManager.getSubId(PhoneConstants.SUB3);
-            if (subIds != null && subIds[0] == subId) {
-                return true;
-            }
-            return false;
+        private boolean isMobileDataAvailable(int subId) {
+            return mSubscriptionManager.getActiveSubscriptionInfo(subId) != null;
         }
 }
diff --git a/src/com/android/settings/FingerprintEnroll.java b/src/com/android/settings/FingerprintEnroll.java
index 8449a1f..c5ea7b4 100644
--- a/src/com/android/settings/FingerprintEnroll.java
+++ b/src/com/android/settings/FingerprintEnroll.java
@@ -31,7 +31,6 @@
 import android.os.CancellationSignal;
 import android.os.PowerManager;
 import android.os.SystemClock;
-import android.os.Vibrator;
 import android.hardware.fingerprint.FingerprintManager;
 import android.hardware.fingerprint.FingerprintManager.EnrollmentCallback;
 import android.util.Log;
@@ -101,7 +100,6 @@
         private Stage mStage;
         private int mEnrollmentSteps;
         private boolean mEnrolling;
-        private Vibrator mVibrator;
         private ProgressBar mProgressBar;
         private ImageView mFingerprintAnimator;
         private ObjectAnimator mProgressAnim;
@@ -289,11 +287,6 @@
 
         private void updateProgress(int progress) {
             if (DEBUG) Log.v(TAG, "Progress: " + progress);
-            if (mVibrator != null) {
-                mVibrator.vibrate(100, new AudioAttributes.Builder()
-                        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
-                        .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION).build());
-            }
             if (mProgressAnim != null) {
                 mProgressAnim.cancel();
             }
@@ -367,7 +360,6 @@
             final Activity activity = getActivity();
             mFingerprintManager = (FingerprintManager)activity
                     .getSystemService(Context.FINGERPRINT_SERVICE);
-            mVibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE);
             mPowerManager = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
 
             mContentView = inflater.inflate(R.layout.fingerprint_enroll, null);
diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java
index 0e47afb..168d3c8 100644
--- a/src/com/android/settings/IccLockSettings.java
+++ b/src/com/android/settings/IccLockSettings.java
@@ -212,14 +212,15 @@
             mTabHost.setOnTabChangedListener(mTabListener);
             mTabHost.clearAllTabs();
 
+            SubscriptionManager sm = SubscriptionManager.from(this);
             for (int i = 0; i < numSims; ++i) {
-                final SubscriptionInfo subInfo = Utils.findRecordBySlotId(this, i);
+                final SubscriptionInfo subInfo = sm.getActiveSubscriptionInfoForSimSlotIndex(i);
                 mTabHost.addTab(buildTabSpec(String.valueOf(i),
                         String.valueOf(subInfo == null
                             ? context.getString(R.string.sim_editor_title, i + 1)
                             : subInfo.getDisplayName())));
             }
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(getBaseContext(), 0);
+            final SubscriptionInfo sir = sm.getActiveSubscriptionInfoForSimSlotIndex(0);
 
             mPhone = (sir == null) ? null
                 : PhoneFactory.getPhone(SubscriptionManager.getPhoneId(sir.getSubscriptionId()));
@@ -476,7 +477,8 @@
         @Override
         public void onTabChanged(String tabId) {
             final int slotId = Integer.parseInt(tabId);
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(getBaseContext(), slotId);
+            final SubscriptionInfo sir = SubscriptionManager.from(getBaseContext())
+                    .getActiveSubscriptionInfoForSimSlotIndex(slotId);
 
             mPhone = (sir == null) ? null
                 : PhoneFactory.getPhone(SubscriptionManager.getPhoneId(sir.getSubscriptionId()));
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index dc4b484..d05160c 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1029,49 +1029,6 @@
     }
 
     /**
-     * finds a record with subId.
-     * Since the number of SIMs are few, an array is fine.
-     */
-    public static SubscriptionInfo findRecordBySubId(Context context, final int subId) {
-        final List<SubscriptionInfo> subInfoList =
-                SubscriptionManager.from(context).getActiveSubscriptionInfoList();
-        if (subInfoList != null) {
-            final int subInfoLength = subInfoList.size();
-
-            for (int i = 0; i < subInfoLength; ++i) {
-                final SubscriptionInfo sir = subInfoList.get(i);
-                if (sir != null && sir.getSubscriptionId() == subId) {
-                    return sir;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * finds a record with slotId.
-     * Since the number of SIMs are few, an array is fine.
-     */
-    public static SubscriptionInfo findRecordBySlotId(Context context, final int slotId) {
-        final List<SubscriptionInfo> subInfoList =
-                SubscriptionManager.from(context).getActiveSubscriptionInfoList();
-        if (subInfoList != null) {
-            final int subInfoLength = subInfoList.size();
-
-            for (int i = 0; i < subInfoLength; ++i) {
-                final SubscriptionInfo sir = subInfoList.get(i);
-                if (sir.getSimSlotIndex() == slotId) {
-                    //Right now we take the first subscription on a SIM.
-                    return sir;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
      * Queries for the UserInfo of a user. Returns null if the user doesn't exist (was removed).
      * @param userManager Instance of UserManager
      * @param checkUser The user to check the existence of.
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index b675ba4..1502173 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -312,7 +312,9 @@
             mFilterAdapter.enableFilter(FILTER_APPS_PRIORITY);
             mFilterAdapter.enableFilter(FILTER_APPS_SENSITIVE);
         }
-        mApplications.setOverrideFilter(new VolumeFilter(mVolumeUuid));
+        if (mListType == LIST_TYPE_STORAGE) {
+            mApplications.setOverrideFilter(new VolumeFilter(mVolumeUuid));
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/deviceinfo/ImeiInformation.java b/src/com/android/settings/deviceinfo/ImeiInformation.java
index c4f4bbb..d82e6c9 100644
--- a/src/com/android/settings/deviceinfo/ImeiInformation.java
+++ b/src/com/android/settings/deviceinfo/ImeiInformation.java
@@ -89,10 +89,8 @@
                     removePreferenceFromScreen(KEY_ICC_ID);
                 }
             } else {
-                setSummaryText(KEY_IMEI, phone.getDeviceId());
-                setSummaryText(KEY_IMEI_SV,
-                        ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
-                        .getDeviceSoftwareVersion(phoneId));
+                setSummaryText(KEY_IMEI, phone.getImei());
+                setSummaryText(KEY_IMEI_SV, phone.getDeviceSvn());
                 // device is not CDMA, do not display CDMA features
                 // check Null in case no specified preference in overlay xml
                 removePreferenceFromScreen(KEY_PRL_VERSION);
diff --git a/src/com/android/settings/deviceinfo/SimStatus.java b/src/com/android/settings/deviceinfo/SimStatus.java
index c52f385..4fa5673 100644
--- a/src/com/android/settings/deviceinfo/SimStatus.java
+++ b/src/com/android/settings/deviceinfo/SimStatus.java
@@ -132,9 +132,9 @@
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
+        mTelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
 
-        mSelectableSubInfos = new ArrayList<SubscriptionInfo>();
-        mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
+        mSelectableSubInfos = SubscriptionManager.from(this).getActiveSubscriptionInfoList();
 
         addPreferencesFromResource(R.xml.device_info_sim_status);
 
@@ -143,13 +143,6 @@
         // Note - missing in zaku build, be careful later...
         mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH);
 
-        for (int i = 0; i < mTelephonyManager.getSimCount(); i++) {
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(this, i);
-            if (sir != null) {
-                mSelectableSubInfos.add(sir);
-            }
-        }
-
         mSir = mSelectableSubInfos.size() > 0 ? mSelectableSubInfos.get(0) : null;
         if (mSelectableSubInfos.size() > 1) {
             setContentView(R.layout.sim_information);
@@ -351,10 +344,8 @@
         }
         // If formattedNumber is null or empty, it'll display as "Unknown".
         setSummaryText(KEY_PHONE_NUMBER, formattedNumber);
-        final String imei = mPhone.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA
-                ? mPhone.getImei() : mPhone.getDeviceId();
-        setSummaryText(KEY_IMEI, imei);
-        setSummaryText(KEY_IMEI_SV, mTelephonyManager.getDeviceSoftwareVersion(/*slotId*/));
+        setSummaryText(KEY_IMEI, mPhone.getImei());
+        setSummaryText(KEY_IMEI_SV, mPhone.getDeviceSvn());
 
         if (!mShowLatestAreaInfo) {
             removePreferenceFromScreen(KEY_LATEST_AREA_INFO);
diff --git a/src/com/android/settings/deviceinfo/StorageWizardBase.java b/src/com/android/settings/deviceinfo/StorageWizardBase.java
index 4cb48c5..42c74a5 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardBase.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardBase.java
@@ -57,7 +57,7 @@
         if (!TextUtils.isEmpty(diskId)) {
             mDisk = mStorage.findDiskById(diskId);
         } else {
-            mDisk = mStorage.findDiskById(mVolume.getDiskId());
+            mDisk = mVolume.getDisk();
         }
 
         setTheme(R.style.SuwThemeMaterial_Light);
diff --git a/src/com/android/settings/notification/AppNotificationSettings.java b/src/com/android/settings/notification/AppNotificationSettings.java
index db957a7..129c359 100644
--- a/src/com/android/settings/notification/AppNotificationSettings.java
+++ b/src/com/android/settings/notification/AppNotificationSettings.java
@@ -154,6 +154,9 @@
             @Override
             public boolean onPreferenceChange(Preference preference, Object newValue) {
                 final boolean banned = (Boolean) newValue;
+                if (banned) {
+                    MetricsLogger.action(getActivity(), MetricsLogger.ACTION_BAN_APP_NOTES, pkg);
+                }
                 final boolean success =  mBackend.setNotificationsBanned(pkg, uid, banned);
                 if (success) {
                     updateDependents(banned);
diff --git a/src/com/android/settings/sim/SimDialogActivity.java b/src/com/android/settings/sim/SimDialogActivity.java
index 97762c4..03a9daf 100644
--- a/src/com/android/settings/sim/SimDialogActivity.java
+++ b/src/com/android/settings/sim/SimDialogActivity.java
@@ -80,7 +80,8 @@
     private void displayPreferredDialog(final int slotId) {
         final Resources res = getResources();
         final Context context = getApplicationContext();
-        final SubscriptionInfo sir = Utils.findRecordBySlotId(context, slotId);
+        final SubscriptionInfo sir = SubscriptionManager.from(context)
+                .getActiveSubscriptionInfoForSimSlotIndex(slotId);
 
         if (sir != null) {
             AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
@@ -214,7 +215,8 @@
                 list.add((String)phoneAccount.getLabel());
                 int subId = telephonyManager.getSubIdForPhoneAccount(phoneAccount);
                 if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
-                    final SubscriptionInfo sir = Utils.findRecordBySubId(context, subId);
+                    final SubscriptionInfo sir = SubscriptionManager.from(context)
+                            .getActiveSubscriptionInfo(subId);
                     callsSubInfoList.add(sir);
                 } else {
                     callsSubInfoList.add(null);
diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java
index 91dadbb..184e882 100644
--- a/src/com/android/settings/sim/SimSettings.java
+++ b/src/com/android/settings/sim/SimSettings.java
@@ -151,7 +151,10 @@
         mAvailableSubInfos = new ArrayList<SubscriptionInfo>(numSlots);
         mSelectableSubInfos = new ArrayList<SubscriptionInfo>();
         for (int i = 0; i < numSlots; ++i) {
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(getActivity(), i);
+            // Less efficient than getActiveSubscriptionInfoList but we need to show a disable
+            // preference if the slot is empty
+            final SubscriptionInfo sir = mSubscriptionManager
+                    .getActiveSubscriptionInfoForSimSlotIndex(i);
             SimPreference simPreference = new SimPreference(getActivity(), sir, i);
             simPreference.setOrder(i-numSlots);
             mSimCards.addPreference(simPreference);
@@ -165,17 +168,7 @@
     }
 
     private void updateAvailableSubInfos(){
-        final TelephonyManager tm =
-            (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
-        final int numSlots = tm.getSimCount();
-
-        mAvailableSubInfos = new ArrayList<SubscriptionInfo>(numSlots);
-        for (int i = 0; i < numSlots; ++i) {
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(getActivity(), i);
-            mAvailableSubInfos.add(sir);
-            if (sir != null) {
-            }
-        }
+        mAvailableSubInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
     }
 
     private void updateAllOptions() {
@@ -203,8 +196,7 @@
 
     private void updateSmsValues() {
         final Preference simPref = findPreference(KEY_SMS);
-        final SubscriptionInfo sir = Utils.findRecordBySubId(getActivity(),
-                mSubscriptionManager.getDefaultSmsSubId());
+        final SubscriptionInfo sir = mSubscriptionManager.getDefaultSmsSubscriptionInfo();
         simPref.setTitle(R.string.sms_messages_title);
         if (DBG) log("[updateSmsValues] mSubInfoList=" + mSubInfoList);
 
@@ -218,8 +210,7 @@
 
     private void updateCellularDataValues() {
         final Preference simPref = findPreference(KEY_CELLULAR_DATA);
-        final SubscriptionInfo sir = Utils.findRecordBySubId(getActivity(),
-                mSubscriptionManager.getDefaultDataSubId());
+        final SubscriptionInfo sir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
         simPref.setTitle(R.string.cellular_data_title);
         if (DBG) log("[updateCellularDataValues] mSubInfoList=" + mSubInfoList);
 
@@ -396,14 +387,12 @@
                     mSubInfoRecord.setDisplayName(displayName);
                     mSubscriptionManager.setDisplayName(displayName, subId,
                             SubscriptionManager.NAME_SOURCE_USER_INPUT);
-                    Utils.findRecordBySubId(getActivity(), subId).setDisplayName(displayName);
 
                     final int tintSelected = tintSpinner.getSelectedItemPosition();
                     int subscriptionId = mSubInfoRecord.getSubscriptionId();
                     int tint = mTintArr[tintSelected];
                     mSubInfoRecord.setIconTint(tint);
                     mSubscriptionManager.setIconTint(tint, subscriptionId);
-                    Utils.findRecordBySubId(getActivity(), subscriptionId).setIconTint(tint);
 
                     updateAllOptions();
                     update();
diff --git a/src/com/android/settings/utils/VoiceSettingsActivity.java b/src/com/android/settings/utils/VoiceSettingsActivity.java
index 21849a4..2553a54 100644
--- a/src/com/android/settings/utils/VoiceSettingsActivity.java
+++ b/src/com/android/settings/utils/VoiceSettingsActivity.java
@@ -21,11 +21,13 @@
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.VoiceInteractor;
+import android.app.VoiceInteractor.AbortVoiceRequest;
 import android.app.VoiceInteractor.CompleteVoiceRequest;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.TextView;
+import android.widget.Toast;
 import android.util.Log;
 
 /**
@@ -65,6 +67,10 @@
      * not null, then it will be read to the user.
      */
     protected void notifySuccess(CharSequence prompt) {
+        if (prompt != null) {
+            Toast.makeText(this, prompt, Toast.LENGTH_LONG).show();
+        }
+
         if (getVoiceInteractor() != null) {
             getVoiceInteractor().submitRequest(new CompleteVoiceRequest(prompt, null));
         }
@@ -85,8 +91,14 @@
     /**
      * Indicates when the setting could not be changed.
      */
-    protected void notifyFailure(String reason) {
-        getVoiceInteractor().submitRequest(new VoiceInteractor.AbortVoiceRequest(reason, null));
+    protected void notifyFailure(CharSequence prompt) {
+        if (prompt != null) {
+            Toast.makeText(this, prompt, Toast.LENGTH_LONG).show();
+        }
+
+        if (getVoiceInteractor() != null) {
+            getVoiceInteractor().submitRequest(new AbortVoiceRequest(prompt, null));
+        }
     }
 
     protected void showFragment(Fragment fragment, String tag) {