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

Commit e401ce51 authored by MiltonWu's avatar MiltonWu Committed by Milton Wu
Browse files

Customize Fingerprint enroll activities

Provide an interface for ODM/OEM to override Fingerprint enrollment
activities.

Bug: 364794493
Flag: EXEMPT can't apply flag for manifest change
Test: atest SettingsRoboTests:FingerprintEnrollTest

Change-Id: I9e5d904fc9382a9b5eff84a7f462e1a9c16c4ba0
parent 637984a3
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -2816,6 +2816,9 @@
        <activity android:name=".biometrics.fingerprint.FingerprintEnrollFinish" android:exported="false"/>
        <activity android:name=".biometrics.fingerprint.FingerprintEnrollParentalConsent" android:exported="false"/>
        <activity android:name=".biometrics.fingerprint.FingerprintEnrollIntroduction"
            android:exported="false"
            android:theme="@style/GlifTheme.Light" />
        <activity android:name=".biometrics.fingerprint.FingerprintEnroll"
            android:exported="true"
            android:theme="@style/GlifTheme.Light">
            <intent-filter>
@@ -2829,6 +2832,10 @@
              android:exported="false"
              android:theme="@style/GlifTheme.Light"
              android:taskAffinity="com.android.settings.root" />
        <activity android:name=".biometrics.fingerprint.FingerprintEnroll$InternalActivity"
            android:exported="false"
            android:theme="@style/GlifTheme.Light"
            android:taskAffinity="com.android.settings.root" />

        <activity android:name=".biometrics.fingerprint.SetupFingerprintEnrollFindSensor"
            android:exported="false"
@@ -2836,6 +2843,10 @@
        <activity android:name=".biometrics.fingerprint.SetupFingerprintEnrollEnrolling" android:exported="false"/>
        <activity android:name=".biometrics.fingerprint.SetupFingerprintEnrollFinish" android:exported="false"/>
        <activity android:name=".biometrics.fingerprint.SetupFingerprintEnrollIntroduction"
            android:exported="false"
            android:permission="android.permission.MANAGE_FINGERPRINT"
            android:theme="@style/GlifTheme.Light" />
        <activity android:name=".biometrics.fingerprint.FingerprintEnroll$SetupActivity"
            android:exported="true"
            android:permission="android.permission.MANAGE_FINGERPRINT"
            android:theme="@style/GlifTheme.Light">
@@ -2845,7 +2856,6 @@
            </intent-filter>
        </activity>


        <activity android:name=".biometrics.fingerprint2.ui.enrollment.activity.FingerprintEnrollmentV2Activity"
            android:exported="true"
            android:permission="android.permission.MANAGE_FINGERPRINT"
+7 −4
Original line number Diff line number Diff line
@@ -40,9 +40,8 @@ import com.android.settings.SettingsActivity;
import com.android.settings.SubSettings;
import com.android.settings.biometrics.face.FaceEnrollIntroduction;
import com.android.settings.biometrics.face.FaceEnrollIntroductionInternal;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollActivityClassProvider;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroductionInternal;
import com.android.settings.core.FeatureFlags;
import com.android.settings.homepage.DeepLinkHomepageActivity;
import com.android.settings.homepage.DeepLinkHomepageActivityInternal;
@@ -255,8 +254,12 @@ public class ActivityEmbeddingRulesController {
                    .buildSearchIntent(mContext, SettingsEnums.SETTINGS_HOMEPAGE);
            addActivityFilter(activityFilters, searchIntent);
        }
        addActivityFilter(activityFilters, FingerprintEnrollIntroduction.class);
        addActivityFilter(activityFilters, FingerprintEnrollIntroductionInternal.class);
        final FingerprintEnrollActivityClassProvider fpClassProvider = FeatureFactory
                .getFeatureFactory()
                .getFingerprintFeatureProvider()
                .getEnrollActivityClassProvider();
        addActivityFilter(activityFilters, fpClassProvider.getDefault());
        addActivityFilter(activityFilters, fpClassProvider.getInternal());
        addActivityFilter(activityFilters, FingerprintEnrollEnrolling.class);
        addActivityFilter(activityFilters, FaceEnrollIntroductionInternal.class);
        addActivityFilter(activityFilters, FaceEnrollIntroduction.class);
+3 −4
Original line number Diff line number Diff line
@@ -44,10 +44,9 @@ import com.android.internal.widget.VerifyCredentialResponse;
import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
import com.android.settings.biometrics.face.FaceEnrollIntroduction;
import com.android.settings.biometrics.fingerprint.FingerprintEnroll;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction;
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollFindSensor;
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroduction;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.password.ChooseLockGeneric;
import com.android.settings.password.ChooseLockSettingsHelper;
@@ -262,13 +261,13 @@ public class BiometricUtils {
    /**
     * @param context caller's context
     * @param activityIntent The intent that started the caller's activity
     * @return Intent for starting FingerprintEnrollIntroduction
     * @return Intent for starting FingerprintEnroll
     */
    public static Intent getFingerprintIntroIntent(@NonNull Context context,
            @NonNull Intent activityIntent) {
        final boolean isSuw = WizardManagerHelper.isAnySetupWizard(activityIntent);
        final Intent intent = new Intent(context, isSuw
                ? SetupFingerprintEnrollIntroduction.class : FingerprintEnrollIntroduction.class);
                ? FingerprintEnroll.SetupActivity.class : FingerprintEnroll.class);
        if (isSuw) {
            WizardManagerHelper.copyWizardManagerExtras(activityIntent, intent);
        }
+69 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.biometrics.fingerprint

import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory

/**
 * Default class for handling fingerprint enrollment, designed to launch a subsequent activity and
 * forward the result, then finish itself.
 */
open class FingerprintEnroll: AppCompatActivity() {

    /** Inner class representing enrolling fingerprint enrollment in SetupWizard environment */
    class SetupActivity : FingerprintEnroll() {
        override val nextActivityClass: Class<*>
            get() = enrollActivityProvider.setup
    }

    /** Inner class representing enrolling fingerprint enrollment from FingerprintSettings */
    class InternalActivity : FingerprintEnroll() {
        override val nextActivityClass: Class<*>
        get() = enrollActivityProvider.internal
    }

    /**
     * The class of the next activity to launch. This is open to allow subclasses to provide their
     * own behavior. Defaults to the default activity class provided by the
     * enrollActivityClassProvider.
     */
    open val nextActivityClass: Class<*>
        get() = enrollActivityProvider.default

    protected val enrollActivityProvider: FingerprintEnrollActivityClassProvider
        get() = featureFactory.fingerprintFeatureProvider.enrollActivityClassProvider

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        /**
         *  Logs the next activity to be launched, creates an intent for that activity,
         *  adds flags to forward the result, includes any existing extras from the current intent,
         *  starts the new activity and then finishes the current one
         */
        Log.d("FingerprintEnroll", "forward to $nextActivityClass")
        val nextIntent = Intent(this, nextActivityClass)
        nextIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT)
        nextIntent.putExtras(intent)
        startActivity(nextIntent)
        finish()
    }
}
 No newline at end of file
+34 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.biometrics.fingerprint

import android.app.Activity

open class FingerprintEnrollActivityClassProvider {

    open val default: Class<out Activity>
        get() = FingerprintEnrollIntroduction::class.java
    open val setup: Class<out Activity>
        get() = SetupFingerprintEnrollIntroduction::class.java
    open val internal: Class<out Activity>
        get() = FingerprintEnrollIntroductionInternal::class.java

    companion object {
        @JvmStatic
        val instance = FingerprintEnrollActivityClassProvider()
    }
}
Loading