[Provider Model] The SIMs page should list all p-SIMs

- We do not support multiple pSIMs until now, so we need to get all p-SIMs from SubscriptionManager
- Apply same checking for downloaded sim

Bug: 199032142
Test: vendor test
Test: atest NetworkProviderSimsCategoryControllerTest and atest NetworkProviderSimListControllerTest
Change-Id: I77d7c52e73ac4e5d09fa3f3926490d7f8f8b0913
This commit is contained in:
Zoey Chen
2021-09-15 17:16:19 +08:00
parent 9dbe775faa
commit 95db7ae728
7 changed files with 189 additions and 72 deletions

View File

@@ -65,14 +65,12 @@ public class MobileNetworkListFragment extends DashboardFragment {
if (Utils.isProviderModelEnabled(getContext())) {
NetworkProviderSimsCategoryController simCategoryPrefCtrl =
new NetworkProviderSimsCategoryController(context, KEY_PREFERENCE_CATEGORY_SIM);
simCategoryPrefCtrl.init(getSettingsLifecycle());
new NetworkProviderSimsCategoryController(context, KEY_PREFERENCE_CATEGORY_SIM,
getSettingsLifecycle());
controllers.add(simCategoryPrefCtrl);
NetworkProviderDownloadedSimsCategoryController downloadedSimsCategoryCtrl =
new NetworkProviderDownloadedSimsCategoryController(context,
KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM);
downloadedSimsCategoryCtrl.init(getSettingsLifecycle());
KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM, getSettingsLifecycle());
controllers.add(downloadedSimsCategoryCtrl);
} else {
controllers.add(new MobileNetworkListController(getContext(), getLifecycle()));

View File

@@ -1,8 +1,8 @@
package com.android.settings.network;
import android.content.Context;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
@@ -15,23 +15,17 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver;
public class NetworkProviderDownloadedSimsCategoryController extends
PreferenceCategoryController implements LifecycleObserver {
private static final String LOG_TAG = "NetworkProviderDownloadedSimsCategoryController";
private static final String KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM =
"provider_model_downloaded_sim_category";
private PreferenceCategory mPreferenceCategory;
private NetworkProviderDownloadedSimListController mNetworkProviderDownloadedSimListController;
public NetworkProviderDownloadedSimsCategoryController(Context context, String key) {
super(context, key);
}
public void init(Lifecycle lifecycle) {
mNetworkProviderDownloadedSimListController = createDownloadedSimListController(lifecycle);
}
@VisibleForTesting
protected NetworkProviderDownloadedSimListController createDownloadedSimListController(
public NetworkProviderDownloadedSimsCategoryController(Context context, String key,
Lifecycle lifecycle) {
return new NetworkProviderDownloadedSimListController(mContext, lifecycle);
super(context, key);
mNetworkProviderDownloadedSimListController =
new NetworkProviderDownloadedSimListController(mContext, lifecycle);
}
@Override
@@ -47,15 +41,23 @@ public class NetworkProviderDownloadedSimsCategoryController extends
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mNetworkProviderDownloadedSimListController.displayPreference(screen);
mPreferenceCategory = screen.findPreference(
KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM);
if (mPreferenceCategory == null) {
Log.d(LOG_TAG, "displayPreference(), Can not find the category.");
return;
}
mPreferenceCategory.setVisible(isAvailable());
mNetworkProviderDownloadedSimListController.displayPreference(screen);
}
@Override
public void updateState(Preference preference) {
super.updateState(preference);
if (mPreferenceCategory == null) {
Log.d(LOG_TAG, "updateState(), Can not find the category.");
return;
}
int count = mPreferenceCategory.getPreferenceCount();
String title = mContext.getString(count > 1
? R.string.downloaded_sims_category_title

View File

@@ -172,7 +172,6 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(mContext)) {
if (!info.isEmbedded()) {
subList.add(info);
break;
}
}
return subList;

View File

@@ -17,33 +17,28 @@
package com.android.settings.network;
import android.content.Context;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.widget.PreferenceCategoryController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
public class NetworkProviderSimsCategoryController extends PreferenceCategoryController implements
LifecycleObserver {
private static final String LOG_TAG = "NetworkProviderSimsCategoryController";
private static final String KEY_PREFERENCE_CATEGORY_SIM = "provider_model_sim_category";
private NetworkProviderSimListController mNetworkProviderSimListController;
private PreferenceCategory mPreferenceCategory;
public NetworkProviderSimsCategoryController(Context context, String key) {
public NetworkProviderSimsCategoryController(Context context, String key, Lifecycle lifecycle) {
super(context, key);
}
public void init(Lifecycle lifecycle) {
mNetworkProviderSimListController = createSimListController(lifecycle);
}
@VisibleForTesting
protected NetworkProviderSimListController createSimListController(
Lifecycle lifecycle) {
return new NetworkProviderSimListController(mContext, lifecycle);
mNetworkProviderSimListController =
new NetworkProviderSimListController(mContext, lifecycle);
}
@Override
@@ -59,8 +54,26 @@ public class NetworkProviderSimsCategoryController extends PreferenceCategoryCon
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
PreferenceCategory preferenceCategory = screen.findPreference(KEY_PREFERENCE_CATEGORY_SIM);
preferenceCategory.setVisible(isAvailable());
mNetworkProviderSimListController.displayPreference(screen);
mPreferenceCategory = screen.findPreference(KEY_PREFERENCE_CATEGORY_SIM);
if (mPreferenceCategory == null) {
Log.d(LOG_TAG, "displayPreference(), Can not find the category.");
return;
}
mPreferenceCategory.setVisible(isAvailable());
}
@Override
public void updateState(Preference preference) {
super.updateState(preference);
if (mPreferenceCategory == null) {
Log.d(LOG_TAG, "updateState(), Can not find the category.");
return;
}
int count = mPreferenceCategory.getPreferenceCount();
String title = mContext.getString(count > 1
? R.string.provider_network_settings_title
: R.string.sim_category_title);
mPreferenceCategory.setTitle(title);
}
}