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.R
|
||||||
import com.android.settings.core.BasePreferenceController
|
import com.android.settings.core.BasePreferenceController
|
||||||
import com.android.settings.network.SubscriptionUtil
|
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
|
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
|
||||||
|
|
||||||
/** This controls a preference allowing the user to delete the profile for an eSIM. */
|
/** 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 {
|
override fun handlePreferenceTreeClick(preference: Preference): Boolean {
|
||||||
if (preference.key != preferenceKey) return false
|
if (preference.key != preferenceKey) return false
|
||||||
|
|
||||||
WifiDppUtils.showLockScreen(mContext) { deleteSim() }
|
MobileNetworkUtils.showLockScreen(mContext) { deleteSim() }
|
||||||
|
|
||||||
return true
|
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_CDMA_EVDO;
|
||||||
import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA;
|
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.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -41,13 +42,18 @@ import android.graphics.Color;
|
|||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.LayerDrawable;
|
import android.graphics.drawable.LayerDrawable;
|
||||||
|
import android.hardware.biometrics.BiometricPrompt;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.CancellationSignal;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.os.PersistableBundle;
|
import android.os.PersistableBundle;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.telecom.PhoneAccountHandle;
|
import android.telecom.PhoneAccountHandle;
|
||||||
@@ -68,6 +74,7 @@ import android.text.TextUtils;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
@@ -1050,4 +1057,53 @@ public class MobileNetworkUtils {
|
|||||||
.launch();
|
.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