Replace deprecated KeyguardManager API with new BiometricPrompt one
Use BiometricPrompt to replace KeyguardManager#createConfirmDeviceCredentialIntent Bug: 124249685 Test: manual test Change-Id: I7a05b8f1b08471cf9f09b3d4ce1bedc7cd529e72
This commit is contained in:
@@ -27,6 +27,9 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.hardware.biometrics.BiometricPrompt;
|
||||||
|
import android.os.CancellationSignal;
|
||||||
|
import android.os.Looper;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.ConnectivityManager.NetworkCallback;
|
import android.net.ConnectivityManager.NetworkCallback;
|
||||||
import android.net.LinkAddress;
|
import android.net.LinkAddress;
|
||||||
@@ -578,21 +581,43 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
if (keyguardManager.isKeyguardSecure()) {
|
if (keyguardManager.isKeyguardSecure()) {
|
||||||
// Show authentication screen to confirm credentials (pin, pattern or password) for
|
// Show authentication screen to confirm credentials (pin, pattern or password) for
|
||||||
// the current user of the device.
|
// the current user of the device.
|
||||||
|
final String title = mContext.getString(
|
||||||
|
R.string.lockpassword_confirm_your_pattern_header);
|
||||||
final String description = String.format(
|
final String description = String.format(
|
||||||
mContext.getString(R.string.wifi_sharing_message),
|
mContext.getString(R.string.wifi_sharing_message),
|
||||||
mAccessPoint.getSsidStr());
|
mAccessPoint.getSsidStr());
|
||||||
final Intent intent = keyguardManager.createConfirmDeviceCredentialIntent(
|
|
||||||
mContext.getString(R.string.lockpassword_confirm_your_pattern_header),
|
final BiometricPrompt.Builder builder = new BiometricPrompt.Builder(mContext)
|
||||||
description);
|
.setTitle(title)
|
||||||
if (intent != null) {
|
.setDescription(description);
|
||||||
mFragment.startActivityForResult(intent,
|
|
||||||
WifiNetworkDetailsFragment.REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS);
|
if (keyguardManager.isDeviceSecure()) {
|
||||||
|
builder.setAllowDeviceCredential(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final BiometricPrompt bp = builder.build();
|
||||||
|
final Handler handler = new Handler(Looper.getMainLooper());
|
||||||
|
bp.authenticate(new CancellationSignal(),
|
||||||
|
runnable -> handler.post(runnable),
|
||||||
|
mAuthenticationCallback);
|
||||||
} else {
|
} else {
|
||||||
launchWifiDppConfiguratorActivity();
|
launchWifiDppConfiguratorActivity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private BiometricPrompt.AuthenticationCallback mAuthenticationCallback =
|
||||||
|
new BiometricPrompt.AuthenticationCallback() {
|
||||||
|
@Override
|
||||||
|
public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
|
||||||
|
launchWifiDppConfiguratorActivity();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAuthenticationError(int errorCode, CharSequence errString) {
|
||||||
|
//Do nothing
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sign in to the captive portal found on this wifi network associated with this preference.
|
* Sign in to the captive portal found on this wifi network associated with this preference.
|
||||||
*/
|
*/
|
||||||
|
@@ -17,11 +17,9 @@ package com.android.settings.wifi.details;
|
|||||||
|
|
||||||
import static com.android.settings.wifi.WifiSettings.WIFI_DIALOG_ID;
|
import static com.android.settings.wifi.WifiSettings.WIFI_DIALOG_ID;
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -53,8 +51,6 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
|
|||||||
|
|
||||||
private static final String TAG = "WifiNetworkDetailsFrg";
|
private static final String TAG = "WifiNetworkDetailsFrg";
|
||||||
|
|
||||||
public static final int REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS = 1;
|
|
||||||
|
|
||||||
private AccessPoint mAccessPoint;
|
private AccessPoint mAccessPoint;
|
||||||
private WifiDetailPreferenceController mWifiDetailPreferenceController;
|
private WifiDetailPreferenceController mWifiDetailPreferenceController;
|
||||||
|
|
||||||
@@ -146,14 +142,4 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
|
|||||||
|
|
||||||
return controllers;
|
return controllers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
|
||||||
|
|
||||||
if (requestCode == REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS
|
|
||||||
&& resultCode == Activity.RESULT_OK) {
|
|
||||||
mWifiDetailPreferenceController.launchWifiDppConfiguratorActivity();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user