Add a listener for subscription changes to SimDialogFragment
For some kinds of telephony changes that might happen while we're already showing one of these dialogs, we already get sent a new intent for the dialog which we internally convert into a refresh of the dialog contents instead of stacking a new copy on top of the old one. But it turns out there are some other cases where the telephony stack doesn't send a new intent for the dialog but *does* send a change event through the SubscriptionManager, and we want to respond to those as well. This CL adds a listener for those events. Fixes: 135276696 Test: make RunSettingsRoboTests Change-Id: Ifb93ae95f45fda5831e112306dd9361ccaa5119c
This commit is contained in:
@@ -16,20 +16,25 @@
|
||||
|
||||
package com.android.settings.sim;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settings.network.SubscriptionsChangeListener;
|
||||
|
||||
/** Common functionality for showing a dialog in SimDialogActivity. */
|
||||
public abstract class SimDialogFragment extends InstrumentedDialogFragment {
|
||||
public abstract class SimDialogFragment extends InstrumentedDialogFragment implements
|
||||
SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
|
||||
private static final String TAG = "SimDialogFragment";
|
||||
|
||||
private static final String KEY_TITLE_ID = "title_id";
|
||||
private static final String KEY_DIALOG_TYPE = "dialog_type";
|
||||
|
||||
private SubscriptionsChangeListener mChangeListener;
|
||||
|
||||
protected static Bundle initArguments(int dialogType, int titleResId) {
|
||||
final Bundle args = new Bundle();
|
||||
args.putInt(KEY_DIALOG_TYPE, dialogType);
|
||||
@@ -45,6 +50,24 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment {
|
||||
return getArguments().getInt(KEY_TITLE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
mChangeListener = new SubscriptionsChangeListener(context, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
mChangeListener.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
mChangeListener.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
super.onDismiss(dialog);
|
||||
@@ -55,4 +78,13 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment {
|
||||
}
|
||||
|
||||
public abstract void updateDialog();
|
||||
|
||||
@Override
|
||||
public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSubscriptionsChanged() {
|
||||
updateDialog();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user