When erasing an eSIM, verify the device screen PIN lock if one is set.
SIM PIN lock existence isn't checked anymore. Bug: 329202869 Test: manual - see b/329202869#comment41 Change-Id: I2c4d2b7e224973c4afa75573e05afe7607d2ae6b
This commit is contained in:
@@ -26,7 +26,7 @@ import androidx.preference.PreferenceScreen
|
||||
import com.android.settings.R
|
||||
import com.android.settings.core.BasePreferenceController
|
||||
import com.android.settings.network.SubscriptionUtil
|
||||
import com.android.settings.wifi.dpp.WifiDppUtils
|
||||
import com.android.settings.network.telephony.MobileNetworkUtils
|
||||
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
|
||||
|
||||
/** This controls a preference allowing the user to delete the profile for an eSIM. */
|
||||
@@ -65,7 +65,7 @@ class DeleteSimProfilePreferenceController(context: Context, preferenceKey: Stri
|
||||
override fun handlePreferenceTreeClick(preference: Preference): Boolean {
|
||||
if (preference.key != preferenceKey) return false
|
||||
|
||||
WifiDppUtils.showLockScreen(mContext) { deleteSim() }
|
||||
MobileNetworkUtils.showLockScreen(mContext) { deleteSim() }
|
||||
|
||||
return true
|
||||
}
|
||||
|
@@ -31,6 +31,7 @@ import static com.android.settings.network.telephony.TelephonyConstants.Telephon
|
||||
import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO;
|
||||
import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA;
|
||||
|
||||
import android.app.KeyguardManager;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -41,13 +42,18 @@ import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
import android.hardware.biometrics.BiometricPrompt;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.Network;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.os.Bundle;
|
||||
import android.os.CancellationSignal;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.PersistableBundle;
|
||||
import android.os.SystemClock;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
import android.telecom.PhoneAccountHandle;
|
||||
@@ -68,6 +74,7 @@ import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
@@ -1050,4 +1057,53 @@ public class MobileNetworkUtils {
|
||||
.launch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows authentication screen to confirm credentials (pin/pattern/password) for the current
|
||||
* user of the device.
|
||||
*
|
||||
* <p>Similar to WifiDppUtils.showLockScreen(), but doesn't check for the existence of
|
||||
* SIM PIN lock, only screen PIN lock.
|
||||
*
|
||||
* @param context The {@code Context} used to get {@link KeyguardManager} service
|
||||
* @param onSuccess The {@code Runnable} which will be executed if the user does not setup
|
||||
* device security or if lock screen is unlocked
|
||||
*/
|
||||
public static void showLockScreen(@NonNull Context context, @NonNull Runnable onSuccess) {
|
||||
final KeyguardManager keyguardManager =
|
||||
context.getSystemService(KeyguardManager.class);
|
||||
|
||||
if (keyguardManager.isDeviceSecure()) {
|
||||
final BiometricPrompt.AuthenticationCallback authenticationCallback =
|
||||
new BiometricPrompt.AuthenticationCallback() {
|
||||
@Override
|
||||
public void onAuthenticationSucceeded(
|
||||
BiometricPrompt.AuthenticationResult result) {
|
||||
onSuccess.run();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAuthenticationError(int errorCode, CharSequence errString) {
|
||||
// Do nothing
|
||||
}
|
||||
};
|
||||
|
||||
final int userId = UserHandle.myUserId();
|
||||
final BiometricPrompt biometricPrompt = new BiometricPrompt.Builder(context)
|
||||
.setTitle(context.getText(R.string.wifi_dpp_lockscreen_title))
|
||||
.setDeviceCredentialAllowed(true)
|
||||
.setTextForDeviceCredential(
|
||||
/* title= */ null,
|
||||
Utils.getConfirmCredentialStringForUser(
|
||||
context, userId, Utils.getCredentialType(context, userId)),
|
||||
/* description= */ null)
|
||||
.build();
|
||||
final Handler handler = new Handler(Looper.getMainLooper());
|
||||
biometricPrompt.authenticate(
|
||||
new CancellationSignal(),
|
||||
handler::post,
|
||||
authenticationCallback);
|
||||
} else {
|
||||
onSuccess.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user