Merge "[Settings] WFC preference will be grey out after disconnecting the call"
This commit is contained in:
committed by
Android (Google) Code Review
commit
0bf6164584
@@ -29,6 +29,7 @@ import android.telecom.TelecomManager;
|
|||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
|
import android.telephony.TelephonyCallback;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -66,7 +67,7 @@ public class NetworkProviderWifiCallingGroup extends
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected CarrierConfigManager mCarrierConfigManager;
|
protected CarrierConfigManager mCarrierConfigManager;
|
||||||
private SubscriptionManager mSubscriptionManager;
|
private SubscriptionManager mSubscriptionManager;
|
||||||
|
private PhoneCallStateTelephonyCallback mTelephonyCallback;
|
||||||
private String mPreferenceGroupKey;
|
private String mPreferenceGroupKey;
|
||||||
private PreferenceGroup mPreferenceGroup;
|
private PreferenceGroup mPreferenceGroup;
|
||||||
private Map<Integer, TelephonyManager> mTelephonyManagerList = new HashMap<>();
|
private Map<Integer, TelephonyManager> mTelephonyManagerList = new HashMap<>();
|
||||||
@@ -79,10 +80,12 @@ public class NetworkProviderWifiCallingGroup extends
|
|||||||
super(context);
|
super(context);
|
||||||
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
|
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
|
||||||
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
|
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
|
||||||
|
|
||||||
mPreferenceGroupKey = preferenceGroupKey;
|
mPreferenceGroupKey = preferenceGroupKey;
|
||||||
mWifiCallingForSubPreferences = new ArrayMap<>();
|
mWifiCallingForSubPreferences = new ArrayMap<>();
|
||||||
setSubscriptionInfoList(context);
|
setSubscriptionInfoList(context);
|
||||||
|
if (mTelephonyCallback == null) {
|
||||||
|
mTelephonyCallback = new PhoneCallStateTelephonyCallback();
|
||||||
|
}
|
||||||
lifecycle.addObserver(this);
|
lifecycle.addObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,9 +137,17 @@ public class NetworkProviderWifiCallingGroup extends
|
|||||||
|
|
||||||
@OnLifecycleEvent(Event.ON_RESUME)
|
@OnLifecycleEvent(Event.ON_RESUME)
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
|
updateListener();
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnLifecycleEvent(Event.ON_PAUSE)
|
||||||
|
public void onPause() {
|
||||||
|
if ((mTelephonyCallback != null)) {
|
||||||
|
mTelephonyCallback.unregister();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAvailable() {
|
public boolean isAvailable() {
|
||||||
if (mSubInfoListForWfc == null) {
|
if (mSubInfoListForWfc == null) {
|
||||||
@@ -168,8 +179,6 @@ public class NetworkProviderWifiCallingGroup extends
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setSubscriptionInfoList(mContext);
|
|
||||||
|
|
||||||
if (!isAvailable()) {
|
if (!isAvailable()) {
|
||||||
for (Preference pref : mWifiCallingForSubPreferences.values()) {
|
for (Preference pref : mWifiCallingForSubPreferences.values()) {
|
||||||
mPreferenceGroup.removePreference(pref);
|
mPreferenceGroup.removePreference(pref);
|
||||||
@@ -246,9 +255,40 @@ public class NetworkProviderWifiCallingGroup extends
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSubscriptionsChanged() {
|
public void onSubscriptionsChanged() {
|
||||||
|
setSubscriptionInfoList(mContext);
|
||||||
|
updateListener();
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateListener() {
|
||||||
|
for (SubscriptionInfo info : mSubInfoListForWfc) {
|
||||||
|
int subId = info.getSubscriptionId();
|
||||||
|
if ((mTelephonyCallback != null)) {
|
||||||
|
mTelephonyCallback.register(mContext, subId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class PhoneCallStateTelephonyCallback extends TelephonyCallback implements
|
||||||
|
TelephonyCallback.CallStateListener {
|
||||||
|
|
||||||
|
private TelephonyManager mTelephonyManager;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCallStateChanged(int state) {
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void register(Context context, int subId) {
|
||||||
|
mTelephonyManager = getTelephonyManagerForSubscriptionId(subId);
|
||||||
|
mTelephonyManager.registerTelephonyCallback(context.getMainExecutor(), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unregister() {
|
||||||
|
mTelephonyManager.unregisterTelephonyCallback(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To indicate that should show the Wi-Fi calling preference or not.
|
* To indicate that should show the Wi-Fi calling preference or not.
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user