Migrate to new ImsRegistrationCallback
Migrate from deprecated api, and use new api as flow. Bug: 337417520 Test: manual - on SIM status Test: unit test Change-Id: I8f938c0ccb6e3e61f8d4f6cb72c293f564351d52
This commit is contained in:
@@ -16,8 +16,6 @@
|
||||
|
||||
package com.android.settings.deviceinfo.simstatus;
|
||||
|
||||
import static androidx.lifecycle.Lifecycle.Event;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
@@ -30,7 +28,6 @@ import android.content.res.Resources;
|
||||
import android.os.IBinder;
|
||||
import android.os.PersistableBundle;
|
||||
import android.os.RemoteException;
|
||||
import android.telephony.AccessNetworkConstants;
|
||||
import android.telephony.Annotation;
|
||||
import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.CellBroadcastIntents;
|
||||
@@ -46,29 +43,28 @@ import android.telephony.TelephonyCallback;
|
||||
import android.telephony.TelephonyDisplayInfo;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.euicc.EuiccManager;
|
||||
import android.telephony.ims.ImsException;
|
||||
import android.telephony.ims.ImsMmTelManager;
|
||||
import android.telephony.ims.ImsReasonInfo;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.lifecycle.LifecycleObserver;
|
||||
import androidx.lifecycle.OnLifecycleEvent;
|
||||
import androidx.lifecycle.DefaultLifecycleObserver;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.network.SubscriptionUtil;
|
||||
import com.android.settingslib.Utils;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
|
||||
import kotlin.Unit;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Controller for Sim Status information within the About Phone Settings page.
|
||||
*/
|
||||
public class SimStatusDialogController implements LifecycleObserver {
|
||||
public class SimStatusDialogController implements DefaultLifecycleObserver {
|
||||
|
||||
private final static String TAG = "SimStatusDialogCtrl";
|
||||
|
||||
@@ -110,26 +106,7 @@ public class SimStatusDialogController implements LifecycleObserver {
|
||||
new OnSubscriptionsChangedListener() {
|
||||
@Override
|
||||
public void onSubscriptionsChanged() {
|
||||
final int prevSubId = (mSubscriptionInfo != null)
|
||||
? mSubscriptionInfo.getSubscriptionId()
|
||||
: SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
|
||||
mSubscriptionInfo = getPhoneSubscriptionInfo(mSlotIndex);
|
||||
|
||||
final int nextSubId = (mSubscriptionInfo != null)
|
||||
? mSubscriptionInfo.getSubscriptionId()
|
||||
: SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
|
||||
if (prevSubId != nextSubId) {
|
||||
if (SubscriptionManager.isValidSubscriptionId(prevSubId)) {
|
||||
unregisterImsRegistrationCallback(prevSubId);
|
||||
}
|
||||
if (SubscriptionManager.isValidSubscriptionId(nextSubId)) {
|
||||
mTelephonyManager =
|
||||
getTelephonyManager().createForSubscriptionId(nextSubId);
|
||||
registerImsRegistrationCallback(nextSubId);
|
||||
}
|
||||
}
|
||||
updateSubscriptionStatus();
|
||||
}
|
||||
};
|
||||
@@ -269,8 +246,8 @@ public class SimStatusDialogController implements LifecycleObserver {
|
||||
/**
|
||||
* OnResume lifecycle event, resume listening for phone state or subscription changes.
|
||||
*/
|
||||
@OnLifecycleEvent(Event.ON_RESUME)
|
||||
public void onResume() {
|
||||
@Override
|
||||
public void onResume(@NonNull LifecycleOwner owner) {
|
||||
if (mSubscriptionInfo == null) {
|
||||
return;
|
||||
}
|
||||
@@ -280,7 +257,7 @@ public class SimStatusDialogController implements LifecycleObserver {
|
||||
.registerTelephonyCallback(mContext.getMainExecutor(), mTelephonyCallback);
|
||||
mSubscriptionManager.addOnSubscriptionsChangedListener(
|
||||
mContext.getMainExecutor(), mOnSubscriptionsChangedListener);
|
||||
registerImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId());
|
||||
collectImsRegistered(owner);
|
||||
|
||||
if (mShowLatestAreaInfo) {
|
||||
updateAreaInfoText();
|
||||
@@ -295,8 +272,8 @@ public class SimStatusDialogController implements LifecycleObserver {
|
||||
/**
|
||||
* onPause lifecycle event, no longer listen for phone state or subscription changes.
|
||||
*/
|
||||
@OnLifecycleEvent(Event.ON_PAUSE)
|
||||
public void onPause() {
|
||||
@Override
|
||||
public void onPause(@NonNull LifecycleOwner owner) {
|
||||
if (mSubscriptionInfo == null) {
|
||||
if (mIsRegisteredListener) {
|
||||
mSubscriptionManager.removeOnSubscriptionsChangedListener(
|
||||
@@ -310,7 +287,6 @@ public class SimStatusDialogController implements LifecycleObserver {
|
||||
return;
|
||||
}
|
||||
|
||||
unregisterImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId());
|
||||
mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
|
||||
getTelephonyManager().unregisterTelephonyCallback(mTelephonyCallback);
|
||||
|
||||
@@ -625,51 +601,22 @@ public class SimStatusDialogController implements LifecycleObserver {
|
||||
mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_VALUE_ID);
|
||||
}
|
||||
|
||||
private ImsMmTelManager.RegistrationCallback mImsRegStateCallback =
|
||||
new ImsMmTelManager.RegistrationCallback() {
|
||||
@Override
|
||||
public void onRegistered(@AccessNetworkConstants.TransportType int imsTransportType) {
|
||||
mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
|
||||
com.android.settingslib.R.string.ims_reg_status_registered));
|
||||
}
|
||||
@Override
|
||||
public void onRegistering(@AccessNetworkConstants.TransportType int imsTransportType) {
|
||||
mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
|
||||
com.android.settingslib.R.string.ims_reg_status_not_registered));
|
||||
}
|
||||
@Override
|
||||
public void onUnregistered(@Nullable ImsReasonInfo info) {
|
||||
mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
|
||||
com.android.settingslib.R.string.ims_reg_status_not_registered));
|
||||
}
|
||||
@Override
|
||||
public void onTechnologyChangeFailed(
|
||||
@AccessNetworkConstants.TransportType int imsTransportType,
|
||||
@Nullable ImsReasonInfo info) {
|
||||
mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
|
||||
com.android.settingslib.R.string.ims_reg_status_not_registered));
|
||||
}
|
||||
};
|
||||
|
||||
private void registerImsRegistrationCallback(int subId) {
|
||||
private void collectImsRegistered(@NonNull LifecycleOwner owner) {
|
||||
if (!isImsRegistrationStateShowUp()) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
final ImsMmTelManager imsMmTelMgr = ImsMmTelManager.createForSubscriptionId(subId);
|
||||
imsMmTelMgr.registerImsRegistrationCallback(mDialog.getContext().getMainExecutor(),
|
||||
mImsRegStateCallback);
|
||||
} catch (ImsException exception) {
|
||||
Log.w(TAG, "fail to register IMS status for subId=" + subId, exception);
|
||||
}
|
||||
}
|
||||
|
||||
private void unregisterImsRegistrationCallback(int subId) {
|
||||
if (!isImsRegistrationStateShowUp()) {
|
||||
return;
|
||||
}
|
||||
final ImsMmTelManager imsMmTelMgr = ImsMmTelManager.createForSubscriptionId(subId);
|
||||
imsMmTelMgr.unregisterImsRegistrationCallback(mImsRegStateCallback);
|
||||
new ImsRegistrationStateController(mContext).collectImsRegistered(
|
||||
owner, mSlotIndex, (Boolean imsRegistered) -> {
|
||||
if (imsRegistered) {
|
||||
mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
|
||||
com.android.settingslib.R.string.ims_reg_status_registered));
|
||||
} else {
|
||||
mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(
|
||||
com.android.settingslib.R.string.ims_reg_status_not_registered));
|
||||
}
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
private SubscriptionInfo getPhoneSubscriptionInfo(int slotId) {
|
||||
|
Reference in New Issue
Block a user