[Settings] Refactor of Wifi Calling part

Refactor of Wifi Calling to avoid accessing hidden APIs.
This includes the following cherry-picks on the corresponding files:
I455685eb26df69d929ff3ed3c26ce84aa5f6b1f8
I1a67db80b114a438afda7d45af90e54af38703c3
Idd4935a6d8ceed77c15e90f96781014d1940a427
Ia5179ee1a23f054899bc74c796542bae40cdc8d5
I57c91a095fc4d454d92e8d78e0b647b4f098c6a3
I8a09264f83b9fc4fce3f79ec3aeb6ae757b004e4
I68462368669b81e10d09bbb93e74e23ea9a1f446
I9c54eb63a0df3fde38965ee7e2ae46cc1b7efd47
I0d5dcfc33b0bddacf059d1fb9af559646e32e68a
I45977c850977be84c0dc1f6461e68a1941efc1a2
I46c047359257ddd5cb3e331add4856b01c5c9739
I35246811d3e01d0b2ca197e9a1ed7081691cd982

Bug: 140542283
Test: build pass
Change-Id: I2cddeefb7cc5f1b2060e572a73560f7cd6204d0b
This commit is contained in:
Bonian Chen
2020-04-08 14:12:12 +08:00
parent 4e8786c09b
commit 5042276cf7
12 changed files with 349 additions and 288 deletions

View File

@@ -22,9 +22,6 @@ import android.os.Bundle;
import android.provider.Settings;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.feature.MmTelFeature;
import android.telephony.ims.stub.ImsRegistrationImplBase;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -35,11 +32,11 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import com.android.ims.ImsManager;
import com.android.internal.util.CollectionUtils;
import com.android.settings.R;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.network.ims.WifiCallingQueryImsState;
import com.android.settings.search.actionbar.SearchMenuController;
import com.android.settings.support.actionbar.HelpMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider;
@@ -196,25 +193,6 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes
}
}
@VisibleForTesting
boolean isWfcEnabledByPlatform(SubscriptionInfo info) {
final ImsManager imsManager = ImsManager.getInstance(getActivity(),
info.getSimSlotIndex());
return imsManager.isWfcEnabledByPlatform();
}
@VisibleForTesting
boolean isWfcProvisionedOnDevice(SubscriptionInfo info) {
final ProvisioningManager provisioningMgr =
ProvisioningManager.createForSubscriptionId(info.getSubscriptionId());
if (provisioningMgr == null) {
return true;
}
return provisioningMgr.getProvisioningStatusForCapability(
MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN);
}
private void updateSubList() {
mSil = SubscriptionUtil.getActiveSubscriptions(
getContext().getSystemService(SubscriptionManager.class));
@@ -225,7 +203,7 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes
}
for (int i = 0; i < mSil.size(); ) {
final SubscriptionInfo info = mSil.get(i);
if (!isWfcEnabledByPlatform(info) || !isWfcProvisionedOnDevice(info)) {
if (!queryImsState(info.getSubscriptionId()).isWifiCallingProvisioned()) {
mSil.remove(i);
} else {
i++;
@@ -241,4 +219,9 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes
getActivity().getActionBar().setTitle(title);
}
}
@VisibleForTesting
WifiCallingQueryImsState queryImsState(int subId) {
return new WifiCallingQueryImsState(getContext(), subId);
}
}