Loading src/com/android/settings/supervision/ConfirmSupervisionCredentialsActivity.kt +3 −5 Original line number Diff line number Diff line Loading @@ -143,12 +143,10 @@ open class ConfirmSupervisionCredentialsActivity : FragmentActivity() { .setConfirmationRequired(true) .setAllowedAuthenticators(BiometricManager.Authenticators.DEVICE_CREDENTIAL) val supportSuprevisionRecovery = getSystemService(SupervisionManager::class.java)?.getSupervisionRecoveryInfo()?.let { !it.email.isNullOrEmpty() || !it.id.isNullOrEmpty() } ?: false val supportSupervisionRecovery = getSystemService(SupervisionManager::class.java)?.getSupervisionRecoveryInfo() != null if (!supportSuprevisionRecovery) { if (!supportSupervisionRecovery) { return builder.build() } Loading src/com/android/settings/supervision/SupervisionPinManagementScreen.kt +4 −8 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.supervision import android.app.supervision.SupervisionManager import android.app.supervision.SupervisionRecoveryInfo.STATE_PENDING import android.app.supervision.flags.Flags import android.content.Context import com.android.settings.R Loading Loading @@ -48,11 +49,10 @@ class SupervisionPinManagementScreen : val recoveryInfo = context.getSystemService(SupervisionManager::class.java)?.supervisionRecoveryInfo return when { recoveryInfo == null || (recoveryInfo.email.isNullOrEmpty() && recoveryInfo.id.isNullOrEmpty()) -> { recoveryInfo == null -> { context.getString(R.string.supervision_pin_management_preference_summary_add) } recoveryInfo.id.isNullOrEmpty() -> { recoveryInfo.state == STATE_PENDING -> { context.getString( R.string.supervision_pin_management_preference_summary_verify_recovery ) Loading @@ -66,11 +66,7 @@ class SupervisionPinManagementScreen : if (Flags.enableSupervisionPinRecoveryScreen()) { val recoveryInfo = context.getSystemService(SupervisionManager::class.java)?.supervisionRecoveryInfo if ( recoveryInfo == null || recoveryInfo.email.isNullOrEmpty() || recoveryInfo.id.isNullOrEmpty() ) { if (recoveryInfo == null || recoveryInfo.state == STATE_PENDING) { // if recovery is not fully setup. return R.drawable.exclamation_icon } Loading src/com/android/settings/supervision/SupervisionPinRecoveryActivity.kt +24 −10 Original line number Diff line number Diff line Loading @@ -19,8 +19,11 @@ import android.app.Activity import android.app.admin.DevicePolicyManager import android.app.supervision.SupervisionManager import android.app.supervision.SupervisionRecoveryInfo import android.app.supervision.SupervisionRecoveryInfo.STATE_PENDING import android.app.supervision.SupervisionRecoveryInfo.STATE_VERIFIED import android.content.Intent import android.os.Bundle import android.os.PersistableBundle import android.util.Log import android.widget.Toast import androidx.activity.result.ActivityResultLauncher Loading Loading @@ -95,9 +98,9 @@ class SupervisionPinRecoveryActivity : FragmentActivity() { recoveryIntent.apply { // Pass along any available recovery information. // TODO(b/409805806): will expose the parcelable as system API and pass it instead. recoveryInfo?.email?.let { putExtra(EXTRA_RECOVERY_EMAIL, it) } recoveryInfo?.id?.let { putExtra(EXTRA_RECOVERY_ID, it) } // TODO(b/409805806): will pass the parcelable once the system API is available. recoveryInfo?.accountName?.let { putExtra(EXTRA_RECOVERY_EMAIL, it) } recoveryInfo?.accountData?.getString("id")?.let { putExtra(EXTRA_RECOVERY_ID, it) } verificationLauncher.launch(this) } } else { Loading Loading @@ -144,9 +147,9 @@ class SupervisionPinRecoveryActivity : FragmentActivity() { applicationContext.getSystemService(SupervisionManager::class.java) val recoveryInfo = supervisionManager?.getSupervisionRecoveryInfo() postSetupVerifyIntent.apply { // TODO(b/409805806): will expose the parcelable as system API and pass // it instead. recoveryInfo?.email?.let { putExtra(EXTRA_RECOVERY_EMAIL, it) } // TODO(b/409805806): will use the parcelable once the system API is // available. recoveryInfo?.accountName?.let { putExtra(EXTRA_RECOVERY_EMAIL, it) } verificationLauncher.launch(postSetupVerifyIntent) } } else { Loading @@ -172,9 +175,20 @@ class SupervisionPinRecoveryActivity : FragmentActivity() { if (data != null) { val supervisionManager = applicationContext.getSystemService(SupervisionManager::class.java) val recoveryInfo = SupervisionRecoveryInfo() recoveryInfo.email = data.getStringExtra(EXTRA_RECOVERY_EMAIL) recoveryInfo.id = data.getStringExtra(EXTRA_RECOVERY_ID) // TODO(b/409805806): will directly get the parcelable from intent once the // system API is available. val recoveryInfo = data.getStringExtra(EXTRA_RECOVERY_EMAIL)?.let { SupervisionRecoveryInfo( /* accountName */ it, /* accountType */ "default", /* state */ if (action == ACTION_SETUP) STATE_PENDING else STATE_VERIFIED, /* accountData */ PersistableBundle().apply { putString("id", data.getStringExtra(EXTRA_RECOVERY_ID)) }, ) } supervisionManager?.setSupervisionRecoveryInfo(recoveryInfo) handleSuccess() } else { Loading src/com/android/settings/supervision/SupervisionPinRecoveryPreference.kt +2 −4 Original line number Diff line number Diff line Loading @@ -34,10 +34,8 @@ class SupervisionPinRecoveryPreference : PreferenceMetadata, PreferenceAvailabil if (!Flags.enableSupervisionPinRecoveryScreen()) { return false } return context .getSystemService(SupervisionManager::class.java) ?.getSupervisionRecoveryInfo() ?.let { !it.email.isNullOrEmpty() || !it.id.isNullOrEmpty() } ?: false return context.getSystemService(SupervisionManager::class.java)?.supervisionRecoveryInfo != null } override fun intent(context: Context): Intent? = Loading src/com/android/settings/supervision/SupervisionSetupRecoveryPreference.kt +9 −9 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.supervision import android.annotation.DrawableRes import android.app.Activity import android.app.supervision.SupervisionManager import android.app.supervision.SupervisionRecoveryInfo.STATE_PENDING import android.app.supervision.flags.Flags import android.content.Context import android.content.Intent Loading Loading @@ -54,7 +55,7 @@ class SupervisionSetupRecoveryPreference : get() = KEY override fun getTitle(context: Context): CharSequence { return if (hasEmailToVerify(context)) { return if (hasAccountNameToVerify(context)) { context.getString(R.string.supervision_verify_pin_recovery_title) } else { context.getString(R.string.supervision_add_pin_recovery_title) Loading @@ -62,7 +63,7 @@ class SupervisionSetupRecoveryPreference : } override fun getSummary(context: Context): CharSequence? { return emailToVerify(context)?.asMaskedEmail() return accountNameToVerify(context)?.asMaskedEmail() } // TODO(b/409837094): get icon with dynamic color. Loading @@ -76,8 +77,7 @@ class SupervisionSetupRecoveryPreference : return context .getSystemService(SupervisionManager::class.java) ?.getSupervisionRecoveryInfo() ?.id ?.isEmpty() ?: true ?.let { it.state == STATE_PENDING } ?: true } override fun onCreate(context: PreferenceLifecycleContext) { Loading Loading @@ -107,7 +107,7 @@ class SupervisionSetupRecoveryPreference : override fun onPreferenceClick(preference: Preference): Boolean { val intent = Intent(lifeCycleContext, SupervisionPinRecoveryActivity::class.java) if (hasEmailToVerify(lifeCycleContext)) { if (hasAccountNameToVerify(lifeCycleContext)) { intent.action = SupervisionPinRecoveryActivity.ACTION_POST_SETUP_VERIFY } else { intent.action = SupervisionPinRecoveryActivity.ACTION_SETUP_VERIFIED Loading @@ -116,15 +116,15 @@ class SupervisionSetupRecoveryPreference : return true } private fun emailToVerify(context: Context): String? { private fun accountNameToVerify(context: Context): String? { return context .getSystemService(SupervisionManager::class.java) ?.supervisionRecoveryInfo ?.email ?.accountName } private fun hasEmailToVerify(context: Context): Boolean { return !emailToVerify(context).isNullOrEmpty() private fun hasAccountNameToVerify(context: Context): Boolean { return !accountNameToVerify(context).isNullOrEmpty() } companion object { Loading Loading
src/com/android/settings/supervision/ConfirmSupervisionCredentialsActivity.kt +3 −5 Original line number Diff line number Diff line Loading @@ -143,12 +143,10 @@ open class ConfirmSupervisionCredentialsActivity : FragmentActivity() { .setConfirmationRequired(true) .setAllowedAuthenticators(BiometricManager.Authenticators.DEVICE_CREDENTIAL) val supportSuprevisionRecovery = getSystemService(SupervisionManager::class.java)?.getSupervisionRecoveryInfo()?.let { !it.email.isNullOrEmpty() || !it.id.isNullOrEmpty() } ?: false val supportSupervisionRecovery = getSystemService(SupervisionManager::class.java)?.getSupervisionRecoveryInfo() != null if (!supportSuprevisionRecovery) { if (!supportSupervisionRecovery) { return builder.build() } Loading
src/com/android/settings/supervision/SupervisionPinManagementScreen.kt +4 −8 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.supervision import android.app.supervision.SupervisionManager import android.app.supervision.SupervisionRecoveryInfo.STATE_PENDING import android.app.supervision.flags.Flags import android.content.Context import com.android.settings.R Loading Loading @@ -48,11 +49,10 @@ class SupervisionPinManagementScreen : val recoveryInfo = context.getSystemService(SupervisionManager::class.java)?.supervisionRecoveryInfo return when { recoveryInfo == null || (recoveryInfo.email.isNullOrEmpty() && recoveryInfo.id.isNullOrEmpty()) -> { recoveryInfo == null -> { context.getString(R.string.supervision_pin_management_preference_summary_add) } recoveryInfo.id.isNullOrEmpty() -> { recoveryInfo.state == STATE_PENDING -> { context.getString( R.string.supervision_pin_management_preference_summary_verify_recovery ) Loading @@ -66,11 +66,7 @@ class SupervisionPinManagementScreen : if (Flags.enableSupervisionPinRecoveryScreen()) { val recoveryInfo = context.getSystemService(SupervisionManager::class.java)?.supervisionRecoveryInfo if ( recoveryInfo == null || recoveryInfo.email.isNullOrEmpty() || recoveryInfo.id.isNullOrEmpty() ) { if (recoveryInfo == null || recoveryInfo.state == STATE_PENDING) { // if recovery is not fully setup. return R.drawable.exclamation_icon } Loading
src/com/android/settings/supervision/SupervisionPinRecoveryActivity.kt +24 −10 Original line number Diff line number Diff line Loading @@ -19,8 +19,11 @@ import android.app.Activity import android.app.admin.DevicePolicyManager import android.app.supervision.SupervisionManager import android.app.supervision.SupervisionRecoveryInfo import android.app.supervision.SupervisionRecoveryInfo.STATE_PENDING import android.app.supervision.SupervisionRecoveryInfo.STATE_VERIFIED import android.content.Intent import android.os.Bundle import android.os.PersistableBundle import android.util.Log import android.widget.Toast import androidx.activity.result.ActivityResultLauncher Loading Loading @@ -95,9 +98,9 @@ class SupervisionPinRecoveryActivity : FragmentActivity() { recoveryIntent.apply { // Pass along any available recovery information. // TODO(b/409805806): will expose the parcelable as system API and pass it instead. recoveryInfo?.email?.let { putExtra(EXTRA_RECOVERY_EMAIL, it) } recoveryInfo?.id?.let { putExtra(EXTRA_RECOVERY_ID, it) } // TODO(b/409805806): will pass the parcelable once the system API is available. recoveryInfo?.accountName?.let { putExtra(EXTRA_RECOVERY_EMAIL, it) } recoveryInfo?.accountData?.getString("id")?.let { putExtra(EXTRA_RECOVERY_ID, it) } verificationLauncher.launch(this) } } else { Loading Loading @@ -144,9 +147,9 @@ class SupervisionPinRecoveryActivity : FragmentActivity() { applicationContext.getSystemService(SupervisionManager::class.java) val recoveryInfo = supervisionManager?.getSupervisionRecoveryInfo() postSetupVerifyIntent.apply { // TODO(b/409805806): will expose the parcelable as system API and pass // it instead. recoveryInfo?.email?.let { putExtra(EXTRA_RECOVERY_EMAIL, it) } // TODO(b/409805806): will use the parcelable once the system API is // available. recoveryInfo?.accountName?.let { putExtra(EXTRA_RECOVERY_EMAIL, it) } verificationLauncher.launch(postSetupVerifyIntent) } } else { Loading @@ -172,9 +175,20 @@ class SupervisionPinRecoveryActivity : FragmentActivity() { if (data != null) { val supervisionManager = applicationContext.getSystemService(SupervisionManager::class.java) val recoveryInfo = SupervisionRecoveryInfo() recoveryInfo.email = data.getStringExtra(EXTRA_RECOVERY_EMAIL) recoveryInfo.id = data.getStringExtra(EXTRA_RECOVERY_ID) // TODO(b/409805806): will directly get the parcelable from intent once the // system API is available. val recoveryInfo = data.getStringExtra(EXTRA_RECOVERY_EMAIL)?.let { SupervisionRecoveryInfo( /* accountName */ it, /* accountType */ "default", /* state */ if (action == ACTION_SETUP) STATE_PENDING else STATE_VERIFIED, /* accountData */ PersistableBundle().apply { putString("id", data.getStringExtra(EXTRA_RECOVERY_ID)) }, ) } supervisionManager?.setSupervisionRecoveryInfo(recoveryInfo) handleSuccess() } else { Loading
src/com/android/settings/supervision/SupervisionPinRecoveryPreference.kt +2 −4 Original line number Diff line number Diff line Loading @@ -34,10 +34,8 @@ class SupervisionPinRecoveryPreference : PreferenceMetadata, PreferenceAvailabil if (!Flags.enableSupervisionPinRecoveryScreen()) { return false } return context .getSystemService(SupervisionManager::class.java) ?.getSupervisionRecoveryInfo() ?.let { !it.email.isNullOrEmpty() || !it.id.isNullOrEmpty() } ?: false return context.getSystemService(SupervisionManager::class.java)?.supervisionRecoveryInfo != null } override fun intent(context: Context): Intent? = Loading
src/com/android/settings/supervision/SupervisionSetupRecoveryPreference.kt +9 −9 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.supervision import android.annotation.DrawableRes import android.app.Activity import android.app.supervision.SupervisionManager import android.app.supervision.SupervisionRecoveryInfo.STATE_PENDING import android.app.supervision.flags.Flags import android.content.Context import android.content.Intent Loading Loading @@ -54,7 +55,7 @@ class SupervisionSetupRecoveryPreference : get() = KEY override fun getTitle(context: Context): CharSequence { return if (hasEmailToVerify(context)) { return if (hasAccountNameToVerify(context)) { context.getString(R.string.supervision_verify_pin_recovery_title) } else { context.getString(R.string.supervision_add_pin_recovery_title) Loading @@ -62,7 +63,7 @@ class SupervisionSetupRecoveryPreference : } override fun getSummary(context: Context): CharSequence? { return emailToVerify(context)?.asMaskedEmail() return accountNameToVerify(context)?.asMaskedEmail() } // TODO(b/409837094): get icon with dynamic color. Loading @@ -76,8 +77,7 @@ class SupervisionSetupRecoveryPreference : return context .getSystemService(SupervisionManager::class.java) ?.getSupervisionRecoveryInfo() ?.id ?.isEmpty() ?: true ?.let { it.state == STATE_PENDING } ?: true } override fun onCreate(context: PreferenceLifecycleContext) { Loading Loading @@ -107,7 +107,7 @@ class SupervisionSetupRecoveryPreference : override fun onPreferenceClick(preference: Preference): Boolean { val intent = Intent(lifeCycleContext, SupervisionPinRecoveryActivity::class.java) if (hasEmailToVerify(lifeCycleContext)) { if (hasAccountNameToVerify(lifeCycleContext)) { intent.action = SupervisionPinRecoveryActivity.ACTION_POST_SETUP_VERIFY } else { intent.action = SupervisionPinRecoveryActivity.ACTION_SETUP_VERIFIED Loading @@ -116,15 +116,15 @@ class SupervisionSetupRecoveryPreference : return true } private fun emailToVerify(context: Context): String? { private fun accountNameToVerify(context: Context): String? { return context .getSystemService(SupervisionManager::class.java) ?.supervisionRecoveryInfo ?.email ?.accountName } private fun hasEmailToVerify(context: Context): Boolean { return !emailToVerify(context).isNullOrEmpty() private fun hasAccountNameToVerify(context: Context): Boolean { return !accountNameToVerify(context).isNullOrEmpty() } companion object { Loading