Merge "Improve multi user settings screen" into rvc-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1542314..9bc9b5e 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7312,6 +7312,9 @@
     <!-- Summary of multimedia messaging service settings.  [CHAR LIMIT=100] -->
     <string name="mms_message_summary">Send &amp; receive when mobile data is off</string>
 
+    <!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
+    <string name="cell_broadcast_receiver_package">com.android.cellbroadcastreceiver</string>
+
     <!-- Title of a preference for whether to allow data during calls that is shown when mobile
          data is turned off. This is needed for some multi-SIM scenarios, because the SIM that is
          default for data might not be available during a phone call. [CHAR LIMIT=60] -->
diff --git a/res/xml/app_and_notification.xml b/res/xml/app_and_notification.xml
index f75bd86..b499180 100644
--- a/res/xml/app_and_notification.xml
+++ b/res/xml/app_and_notification.xml
@@ -82,7 +82,7 @@
         settings:useAdminDisabledSummary="true">
         <intent
             android:action="android.intent.action.MAIN"
-            android:targetPackage="com.android.cellbroadcastreceiver"
+            android:targetPackage="@string/cell_broadcast_receiver_package"
             android:targetClass="com.android.cellbroadcastreceiver.CellBroadcastSettings"/>
     </com.android.settingslib.RestrictedPreference>
 
diff --git a/src/com/android/settings/notification/EmergencyBroadcastPreferenceController.java b/src/com/android/settings/notification/EmergencyBroadcastPreferenceController.java
index 7add167..de7e780 100644
--- a/src/com/android/settings/notification/EmergencyBroadcastPreferenceController.java
+++ b/src/com/android/settings/notification/EmergencyBroadcastPreferenceController.java
@@ -24,6 +24,7 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
+import com.android.internal.telephony.CellBroadcastUtils;
 import com.android.settings.accounts.AccountRestrictionHelper;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settingslib.RestrictedPreference;
@@ -88,7 +89,9 @@
                 com.android.internal.R.bool.config_cellBroadcastAppLinks);
         if (enabled) {
             try {
-                if (mPm.getApplicationEnabledSetting("com.android.cellbroadcastreceiver")
+                String packageName = CellBroadcastUtils
+                        .getDefaultCellBroadcastReceiverPackageName(mContext);
+                if (packageName == null || mPm.getApplicationEnabledSetting(packageName)
                         == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
                     enabled = false;  // CMAS app disabled
                 }
diff --git a/src/com/android/settings/notification/RemoteVolumeGroupController.java b/src/com/android/settings/notification/RemoteVolumeGroupController.java
index a0b1057..4b045e2 100644
--- a/src/com/android/settings/notification/RemoteVolumeGroupController.java
+++ b/src/com/android/settings/notification/RemoteVolumeGroupController.java
@@ -23,8 +23,6 @@
 import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
-import androidx.lifecycle.LifecycleObserver;
-import androidx.lifecycle.OnLifecycleEvent;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceScreen;
@@ -32,7 +30,8 @@
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.BasePreferenceController;
-import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.core.lifecycle.LifecycleObserver;
+import com.android.settingslib.core.lifecycle.events.OnDestroy;
 import com.android.settingslib.media.LocalMediaManager;
 import com.android.settingslib.media.MediaDevice;
 import com.android.settingslib.media.MediaOutputSliceConstants;
@@ -46,7 +45,8 @@
  * {@link com.android.settings.notification.RemoteVolumeSeekBarPreference}
  **/
 public class RemoteVolumeGroupController extends BasePreferenceController implements
-        Preference.OnPreferenceChangeListener, LifecycleObserver, LocalMediaManager.DeviceCallback {
+        Preference.OnPreferenceChangeListener, LifecycleObserver, OnDestroy,
+        LocalMediaManager.DeviceCallback {
 
     private static final String KEY_REMOTE_VOLUME_GROUP = "remote_media_group";
     private static final String TAG = "RemoteVolumePrefCtr";
@@ -93,11 +93,7 @@
         }
     }
 
-    /**
-     * onDestroy()
-     * {@link androidx.lifecycle.OnLifecycleEvent}
-     **/
-    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
+    @Override
     public void onDestroy() {
         mLocalMediaManager.unregisterCallback(this);
         mLocalMediaManager.stopScan();
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index 746a2df..9e7f3ed 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -190,7 +190,6 @@
             controller.setCallback(mVolumeCallback);
             getSettingsLifecycle().addObserver(controller);
         }
-        getSettingsLifecycle().addObserver(use(RemoteVolumeGroupController.class));
     }
 
     // === Volumes ===