Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79a3ae86 authored by Arc Wang's avatar Arc Wang
Browse files

Replace deprecated KeyguardManager API with new BiometricPrompt one

Use BiometricPrompt to replace KeyguardManager#createConfirmDeviceCredentialIntent

Bug: 124249685
Test: manual test
Change-Id: I7a05b8f1b08471cf9f09b3d4ce1bedc7cd529e72
parent 0acd013f
Loading
Loading
Loading
Loading
+31 −6
Original line number Original line Diff line number Diff line
@@ -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.
     */
     */
+0 −14
Original line number Original line Diff line number Diff line
@@ -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();
        }
    }
}
}