mControllers.add(new VibrationPreferenceController(context, mBackend));
mControllers.add(new VisibilityPreferenceController(context, new LockPatternUtils(context),
mBackend));
- mControllers.add(new DndPreferenceController(context, getLifecycle(), mBackend));
+ mControllers.add(new DndPreferenceController(context, mBackend));
mControllers.add(new AppLinkPreferenceController(context));
mControllers.add(new DescriptionPreferenceController(context));
mControllers.add(new NotificationsOffPreferenceController(context));
import android.content.Context;
import android.content.Intent;
+import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
import android.util.Log;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
+import com.android.settings.applications.AppInfoBase;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.ArrayList;
}
@Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ final PreferenceScreen screen = getPreferenceScreen();
+ Bundle args = getArguments();
+ // If linking to this screen from an external app, expand settings
+ if (screen != null && args != null) {
+ if (!args.getBoolean(ARG_FROM_SETTINGS, false)) {
+ screen.setInitialExpandedChildrenCount(Integer.MAX_VALUE);
+ }
+ }
+ }
+
+ @Override
public void onResume() {
super.onResume();
if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null || mChannel == null) {
mBackend));
mControllers.add(new LightsPreferenceController(context, mBackend));
mControllers.add(new BadgePreferenceController(context, mBackend));
- mControllers.add(new DndPreferenceController(context, getLifecycle(), mBackend));
+ mControllers.add(new DndPreferenceController(context, mBackend));
mControllers.add(new NotificationsOffPreferenceController(context));
return new ArrayList<>(mControllers);
}
import com.android.settingslib.core.lifecycle.events.OnResume;
public class DndPreferenceController extends NotificationPreferenceController
- implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener,
- LifecycleObserver {
+ implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
private static final String KEY_BYPASS_DND = "bypass_dnd";
- public DndPreferenceController(Context context, Lifecycle lifecycle,
- NotificationBackend backend) {
+ public DndPreferenceController(Context context, NotificationBackend backend) {
super(context, backend);
- if (lifecycle != null) {
- lifecycle.addObserver(this);
- }
}
@Override
abstract public class NotificationSettingsBase extends DashboardFragment {
private static final String TAG = "NotifiSettingsBase";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+ protected static final String ARG_FROM_SETTINGS = "fromSettings";
protected PackageManager mPm;
protected NotificationBackend mBackend = new NotificationBackend();
channelArgs.putInt(AppInfoBase.ARG_PACKAGE_UID, mUid);
channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mPkg);
channelArgs.putString(Settings.EXTRA_CHANNEL_ID, channel.getId());
+ channelArgs.putBoolean(ARG_FROM_SETTINGS, true);
channelPref.setIntent(new SubSettingLauncher(getActivity())
.setDestination(ChannelNotificationSettings.class.getName())
.setArguments(channelArgs)
private UserManager mUm;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private PreferenceScreen mScreen;
- @Mock
- private Lifecycle mLifecycle;
private DndPreferenceController mController;
shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNm);
shadowApplication.setSystemService(Context.USER_SERVICE, mUm);
mContext = RuntimeEnvironment.application;
- mController = spy(new DndPreferenceController(mContext, mLifecycle, mBackend));
+ mController = spy(new DndPreferenceController(mContext, mBackend));
}
@Test