Reworks lock screen flows.

This also adds frp warning dialogs in case the user skips lock
screen setup initially.

bug:26880444
Change-Id: I732b6a806e139fb6c1c1b334b8d1608c229f217c
This commit is contained in:
Udam Saini
2016-02-03 17:31:11 -08:00
parent 40f4bf2a1f
commit 8ef4c62003
17 changed files with 538 additions and 147 deletions

View File

@@ -16,26 +16,43 @@
package com.android.settings.fingerprint;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.UserHandle;
import android.text.Annotation;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.URLSpan;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.ChooseLockGeneric;
import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.HelpUtils;
import com.android.settings.R;
import com.android.setupwizardlib.SetupWizardItemsLayout;
import com.android.setupwizardlib.items.Item;
import com.android.setupwizardlib.items.ItemAdapter;
/**
* Onboarding activity for fingerprint enrollment.
*/
public class FingerprintEnrollIntroduction extends FingerprintEnrollBase {
public class FingerprintEnrollIntroduction extends FingerprintEnrollBase
implements AdapterView.OnItemClickListener {
private static final int CHOOSE_LOCK_GENERIC_REQUEST = 1;
private static final int FINGERPRINT_FIND_SENSOR_REQUEST = 2;
protected static final int CHOOSE_LOCK_GENERIC_REQUEST = 1;
protected static final int FINGERPRINT_FIND_SENSOR_REQUEST = 2;
private boolean mHasPassword;
@@ -44,8 +61,14 @@ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase {
super.onCreate(savedInstanceState);
setContentView(R.layout.fingerprint_enroll_introduction);
setHeaderText(R.string.security_settings_fingerprint_enroll_introduction_title);
findViewById(R.id.cancel_button).setOnClickListener(this);
findViewById(R.id.learn_more_button).setOnClickListener(this);
final SetupWizardItemsLayout layout =
(SetupWizardItemsLayout) findViewById(R.id.setup_wizard_layout);
layout.getListView().setOnItemClickListener(this);
final ItemAdapter adapter = (ItemAdapter) layout.getAdapter();
Item item = (Item) adapter.findItemById(R.id.fingerprint_introduction_message_warning);
item.setTitle(LearnMoreSpan.linkify(
getText(R.string.security_settings_fingerprint_enroll_introduction_message_warning),
getString(R.string.help_url_fingerprint)));
updatePasswordQuality();
}
@@ -107,7 +130,7 @@ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase {
if (requestCode == FINGERPRINT_FIND_SENSOR_REQUEST) {
if (isResultFinished || resultCode == RESULT_SKIP) {
final int result = isResultFinished ? RESULT_OK : RESULT_SKIP;
setResult(result);
setResult(result, data);
finish();
return;
}
@@ -124,24 +147,66 @@ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase {
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.cancel_button) {
finish();
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final Item item = (Item) parent.getItemAtPosition(position);
switch (item.getId()) {
case R.id.next_button:
onNextButtonClick();
break;
case R.id.cancel_button:
onCancelButtonClick();
break;
}
if (v.getId() == R.id.learn_more_button) {
launchFingerprintHelp();
}
super.onClick(v);
}
private void launchFingerprintHelp() {
Intent helpIntent = HelpUtils.getHelpIntent(this,
getString(R.string.help_url_fingerprint), getClass().getName());
startActivity(helpIntent);
}
@Override
protected int getMetricsCategory() {
return MetricsEvent.FINGERPRINT_ENROLL_INTRO;
}
protected void onCancelButtonClick() {
finish();
}
private static class LearnMoreSpan extends URLSpan {
private static final String TAG = "LearnMoreSpan";
private static final Typeface TYPEFACE_MEDIUM =
Typeface.create("sans-serif-medium", Typeface.NORMAL);
private LearnMoreSpan(String url) {
super(url);
}
@Override
public void onClick(View widget) {
Context ctx = widget.getContext();
Intent intent = HelpUtils.getHelpIntent(ctx, getURL(), ctx.getClass().getName());
try {
((Activity) ctx).startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.w(LearnMoreSpan.TAG,
"Actvity was not found for intent, " + intent.toString());
}
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
ds.setTypeface(TYPEFACE_MEDIUM);
}
public static CharSequence linkify(CharSequence rawText, String uri) {
SpannableString msg = new SpannableString(rawText);
Annotation[] spans = msg.getSpans(0, msg.length(), Annotation.class);
SpannableStringBuilder builder = new SpannableStringBuilder(msg);
for (Annotation annotation : spans) {
int start = msg.getSpanStart(annotation);
int end = msg.getSpanEnd(annotation);
LearnMoreSpan link = new LearnMoreSpan(uri);
builder.setSpan(link, start, end, msg.getSpanFlags(link));
}
return builder;
}
}
}