diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 684811c..fd28fa0 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -81,4 +81,6 @@
         <attr name="fillColor" format="color" />
         <attr name="fillColorSecondary" format="color" />
     </declare-styleable>
+
+    <attr name="apnPreferenceStyle" format="reference" />
 </resources>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 615988f..805214f 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -26,5 +26,6 @@
         <item name="@*android:preferenceListStyle">@style/PreferenceHeaderListSinglePane</item>
         <item name="@*android:preferenceFragmentListStyle">@style/PreferenceFragmentListSinglePane</item>
         <item name="@*android:preferenceFragmentPaddingSide">@dimen/settings_side_margin</item>
+        <item name="apnPreferenceStyle">@style/ApnPreference</item>
     </style>
 </resources>
diff --git a/src/com/android/settings/ApnPreference.java b/src/com/android/settings/ApnPreference.java
index 9d32a71..addb695 100644
--- a/src/com/android/settings/ApnPreference.java
+++ b/src/com/android/settings/ApnPreference.java
@@ -40,7 +40,7 @@
     }
 
     public ApnPreference(Context context, AttributeSet attrs) {
-        this(context, attrs, R.style.ApnPreference);
+        this(context, attrs, R.attr.apnPreferenceStyle);
     }
 
     public ApnPreference(Context context) {
diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java
index 1c9409c..818ec2b 100644
--- a/src/com/android/settings/location/LocationSettings.java
+++ b/src/com/android/settings/location/LocationSettings.java
@@ -180,8 +180,8 @@
                 injector.reloadStatusMessages();
             }
         };
-        activity.registerReceiver(
-                mReceiver, new IntentFilter(SettingInjectorService.UPDATE_INTENT));
+        activity.registerReceiver(mReceiver,
+                new IntentFilter(SettingInjectorService.ACTION_INJECTED_SETTING_CHANGED));
 
         if (locationServices.size() > 0) {
             addPreferencesSorted(locationServices, categoryLocationServices);
diff --git a/src/com/android/settings/location/SettingsInjector.java b/src/com/android/settings/location/SettingsInjector.java
index 532304d..22e2413 100644
--- a/src/com/android/settings/location/SettingsInjector.java
+++ b/src/com/android/settings/location/SettingsInjector.java
@@ -56,9 +56,6 @@
  * Code-sharing would require extracting {@link
  * android.content.pm.RegisteredServicesCache#parseServiceAttributes(android.content.res.Resources,
  * String, android.util.AttributeSet)} into an interface, which didn't seem worth it.
- *
- * TODO: register a broadcast receiver that calls updateUI() when it receives
- * {@link SettingInjectorService#UPDATE_INTENT}.
  */
 class SettingsInjector {
     static final String TAG = "SettingsInjector";
@@ -278,8 +275,8 @@
         /**
          * Settings whose status values need to be loaded. A set is used to prevent redundant loads
          * even if {@link #reloadStatusMessages()} is called many times in rapid succession (for
-         * example, if we receive a lot of
-         * {@link android.location.SettingInjectorService#UPDATE_INTENT} broadcasts).
+         * example, if we receive a lot of {@link
+         * android.location.SettingInjectorService#ACTION_INJECTED_SETTING_CHANGED} broadcasts).
          * <p/>
          * We use a linked hash set to ensure that when {@link #reloadStatusMessages()} is called,
          * any settings that haven't been loaded yet will finish loading before any already-loaded
@@ -386,12 +383,12 @@
                 @Override
                 public void handleMessage(Message msg) {
                     Bundle bundle = msg.getData();
-                    String status = bundle.getString(SettingInjectorService.STATUS_KEY);
+                    String summary = bundle.getString(SettingInjectorService.SUMMARY_KEY);
                     boolean enabled = bundle.getBoolean(SettingInjectorService.ENABLED_KEY, true);
                     if (Log.isLoggable(TAG, Log.DEBUG)) {
                         Log.d(TAG, setting + ": received " + msg + ", bundle: " + bundle);
                     }
-                    preference.setSummary(status);
+                    preference.setSummary(summary);
                     preference.setEnabled(enabled);
                     mHandler.sendMessage(
                             mHandler.obtainMessage(WHAT_RECEIVED_STATUS, Setting.this));
