Add checkbox for erase esim under network reset screen

This CL add a checkbox letting user decide when they reset the network
configurations under System > Reset options > Reset Wi-Fi, mobile &
Bluetooth, whether they want to reset eSIM together or not. If the user
choose to reset eSIM togather, EuiccManager#eraseSubscriptions will be
called and all the eSIM profiles will be removed.

Bug: 62961867
Test: E2E & make RunSettingsRoboTests
Change-Id: I533756b12c0474e8e58cc6fe60a38c119365cee2
This commit is contained in:
Qingxi Li
2018-01-05 10:52:42 -08:00
parent 18a9d7bad0
commit 0caad2f3ba
9 changed files with 313 additions and 9 deletions

View File

@@ -18,20 +18,28 @@ package com.android.settings;
import android.annotation.Nullable;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.provider.Settings.Global;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.euicc.EuiccManager;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Spinner;
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.telephony.PhoneConstants;
@@ -64,6 +72,8 @@ public class ResetNetwork extends InstrumentedPreferenceFragment {
private View mContentView;
private Spinner mSubscriptionSpinner;
private Button mInitiateButton;
private View mEsimContainer;
private CheckBox mEsimCheckbox;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -107,6 +117,7 @@ public class ResetNetwork extends InstrumentedPreferenceFragment {
SubscriptionInfo subscription = mSubscriptions.get(selectedIndex);
args.putInt(PhoneConstants.SUBSCRIPTION_KEY, subscription.getSubscriptionId());
}
args.putBoolean(MasterClear.ERASE_ESIMS_EXTRA, mEsimCheckbox.isChecked());
((SettingsActivity) getActivity()).startPreferencePanel(
this, ResetNetworkConfirm.class.getName(),
args, R.string.reset_network_confirm_title, null, null, 0);
@@ -141,6 +152,8 @@ public class ResetNetwork extends InstrumentedPreferenceFragment {
*/
private void establishInitialState() {
mSubscriptionSpinner = (Spinner) mContentView.findViewById(R.id.reset_network_subscription);
mEsimContainer = mContentView.findViewById(R.id.erase_esim_container);
mEsimCheckbox = mContentView.findViewById(R.id.erase_esim);
mSubscriptions = SubscriptionManager.from(getActivity()).getActiveSubscriptionInfoList();
if (mSubscriptions != null && mSubscriptions.size() > 0) {
@@ -192,6 +205,30 @@ public class ResetNetwork extends InstrumentedPreferenceFragment {
}
mInitiateButton = (Button) mContentView.findViewById(R.id.initiate_reset_network);
mInitiateButton.setOnClickListener(mInitiateListener);
if (showEuiccSettings(getContext())) {
mEsimContainer.setVisibility(View.VISIBLE);
TextView title = mContentView.findViewById(R.id.erase_esim_title);
title.setText(R.string.reset_esim_title);
mEsimContainer.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mEsimCheckbox.toggle();
}
});
} else {
mEsimCheckbox.setChecked(false /* checked */);
}
}
private boolean showEuiccSettings(Context context) {
EuiccManager euiccManager =
(EuiccManager) context.getSystemService(Context.EUICC_SERVICE);
if (!euiccManager.isEnabled()) {
return false;
}
ContentResolver resolver = context.getContentResolver();
return Settings.Global.getInt(resolver, Global.EUICC_PROVISIONED, 0) != 0
|| Settings.Global.getInt(resolver, Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0;
}
@Override