Snap for 7736437 from 72264775ef to sc-v2-release
Change-Id: I78e1292996e4bec0030baaf39b952884085648bd
This commit is contained in:
@@ -136,7 +136,7 @@
|
||||
android:taskAffinity="com.android.settings.root"
|
||||
android:launchMode="singleTask"
|
||||
android:exported="true"
|
||||
android:configChanges="keyboard|keyboardHidden">
|
||||
android:configChanges="keyboard|keyboardHidden|screenSize|screenLayout">
|
||||
<intent-filter android:priority="1">
|
||||
<action android:name="android.settings.SETTINGS" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
@@ -726,6 +726,7 @@
|
||||
<string name="security_dashboard_summary">Screen lock, Find My Device, app security</string>
|
||||
|
||||
<!-- Face enrollment and settings --><skip />
|
||||
<!-- Note: Update FaceEnrollParentalConsent.CONSENT_STRING_RESOURCES when any _consent_ strings are added or removed. -->
|
||||
<!-- Message shown in summary field when face unlock is set up. [CHAR LIMIT=40] -->
|
||||
<string name="security_settings_face_preference_summary">Face added</string>
|
||||
<!-- Message shown in summary field when Face Unlock is not set up. [CHAR LIMIT=54] -->
|
||||
@@ -879,6 +880,7 @@
|
||||
<string name="security_settings_face_settings_context_subtitle">Use Face Unlock to unlock your phone</string>
|
||||
|
||||
<!-- Fingerprint enrollment and settings --><skip />
|
||||
<!-- Note: Update FingerprintEnrollParentalConsent.CONSENT_STRING_RESOURCES when any _consent_ strings are added or removed. -->
|
||||
<!-- Title shown for menu item that launches fingerprint settings or enrollment [CHAR LIMIT=22] -->
|
||||
<string name="security_settings_fingerprint_preference_title">Fingerprint</string>
|
||||
<!-- Fingerprint managment category title - configuration options for managing enrolled fingerprints [CHAR LIMIT=22] -->
|
||||
|
||||
@@ -233,6 +233,12 @@ public class SettingsActivity extends SettingsBaseActivity
|
||||
protected void onCreate(Bundle savedState) {
|
||||
super.onCreate(savedState);
|
||||
Log.d(LOG_TAG, "Starting onCreate");
|
||||
|
||||
if (launchHomepageForTwonPaneDeepLink()) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
final FeatureFactory factory = FeatureFactory.getFactory(this);
|
||||
@@ -242,22 +248,7 @@ public class SettingsActivity extends SettingsBaseActivity
|
||||
// Should happen before any call to getIntent()
|
||||
getMetaData();
|
||||
|
||||
// If it's a deep link intent, start the Activity from SettingsHomepageActivity for 2-pane.
|
||||
final Intent intent = getIntent();
|
||||
final boolean isFromSettingsHomepage = intent.getBooleanExtra(
|
||||
SettingsHomepageActivity.EXTRA_IS_FROM_SETTINGS_HOMEPAGE, /* defaultValue */ false);
|
||||
if (ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this) && !isFromSettingsHomepage
|
||||
&& isOnlyOneActivityInActivityStack()) {
|
||||
final Intent trampolineIntent =
|
||||
new Intent(android.provider.Settings.ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK);
|
||||
trampolineIntent.putExtra(
|
||||
android.provider.Settings.EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_URI,
|
||||
intent.toUri(Intent.URI_INTENT_SCHEME));
|
||||
startActivity(trampolineIntent);
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
if (intent.hasExtra(EXTRA_UI_OPTIONS)) {
|
||||
getWindow().setUiOptions(intent.getIntExtra(EXTRA_UI_OPTIONS, 0));
|
||||
}
|
||||
@@ -265,17 +256,11 @@ public class SettingsActivity extends SettingsBaseActivity
|
||||
// Getting Intent properties can only be done after the super.onCreate(...)
|
||||
final String initialFragmentName = getInitialFragmentName(intent);
|
||||
|
||||
// This is a "Sub Settings" when:
|
||||
// - this is a real SubSettings
|
||||
// - or :settings:show_fragment_as_subsetting is passed to the Intent
|
||||
final boolean isSubSettings = this instanceof SubSettings ||
|
||||
intent.getBooleanExtra(EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, false);
|
||||
|
||||
// If this is a sub settings, then apply the SubSettings Theme for the ActionBar content
|
||||
// insets.
|
||||
// If this is in setup flow, don't apply theme. Because light theme needs to be applied
|
||||
// in SettingsBaseActivity#onCreate().
|
||||
if (isSubSettings && !WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
||||
if (isSubSettings(intent) && !WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
||||
setTheme(R.style.Theme_SubSettings);
|
||||
}
|
||||
|
||||
@@ -364,10 +349,43 @@ public class SettingsActivity extends SettingsBaseActivity
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isOnlyOneActivityInActivityStack() {
|
||||
final ActivityManager activityManager = getSystemService(ActivityManager.class);
|
||||
List<ActivityManager.RunningTaskInfo> taskList = activityManager.getRunningTasks(2);
|
||||
return taskList.get(0).numActivities == 1;
|
||||
private boolean isSubSettings(Intent intent) {
|
||||
return this instanceof SubSettings ||
|
||||
intent.getBooleanExtra(EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, false);
|
||||
}
|
||||
|
||||
/** Returns true if the Activity is started by a deep link intent for large screen devices. */
|
||||
private boolean launchHomepageForTwonPaneDeepLink() {
|
||||
if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
final Intent intent = getIntent();
|
||||
// Only starts trampoline for deep links. Should return false for all the cases that
|
||||
// Settings app starts SettingsActivity or SubSetting by itself.
|
||||
if (intent.getAction() == null) {
|
||||
// Other apps should send deep link intent which matches intent filter of the Activity.
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isSubSettings(intent)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (intent.getBooleanExtra(SettingsHomepageActivity.EXTRA_IS_FROM_SETTINGS_HOMEPAGE,
|
||||
/* defaultValue */ false)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// It's a deep link intent, SettingsHomepageActivity will set SplitPairRule and start it.
|
||||
final Intent trampolineIntent =
|
||||
new Intent(android.provider.Settings.ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK);
|
||||
trampolineIntent.putExtra(
|
||||
android.provider.Settings.EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_URI,
|
||||
intent.toUri(Intent.URI_INTENT_SCHEME));
|
||||
startActivity(trampolineIntent);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Returns the initial fragment name that the activity will launch. */
|
||||
|
||||
@@ -28,7 +28,7 @@ import androidx.window.embedding.SplitController;
|
||||
public class ActivityEmbeddingUtils {
|
||||
public static final float SPLIT_RATIO = 0.5f;
|
||||
// The smallest value of current width of the window when the split should be used.
|
||||
private static final float MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP = 600f;
|
||||
private static final float MIN_CURRENT_SCREEN_SPLIT_WIDTH_DP = 720f;
|
||||
// The smallest value of the smallest-width (sw) of the window in any rotation when
|
||||
// the split should be used.
|
||||
private static final float MIN_SMALLEST_SCREEN_SPLIT_WIDTH_DP = 600f;
|
||||
|
||||
@@ -48,6 +48,10 @@ public class ParentalConsentHelper {
|
||||
private static final String KEY_FINGERPRINT_CONSENT = "fingerprint";
|
||||
private static final String KEY_IRIS_CONSENT = "iris";
|
||||
|
||||
private static final String KEY_FACE_CONSENT_STRINGS = "face_strings";
|
||||
private static final String KEY_FINGERPRINT_CONSENT_STRINGS = "fingerprint_strings";
|
||||
private static final String KEY_IRIS_CONSENT_STRINGS = "iris_strings";
|
||||
|
||||
private final boolean mRequireFace;
|
||||
private final boolean mRequireFingerprint;
|
||||
|
||||
@@ -152,9 +156,14 @@ public class ParentalConsentHelper {
|
||||
public Bundle getConsentResult() {
|
||||
final Bundle result = new Bundle();
|
||||
result.putBoolean(KEY_FACE_CONSENT, mConsentFace != null ? mConsentFace : false);
|
||||
result.putIntArray(KEY_FACE_CONSENT_STRINGS,
|
||||
FaceEnrollParentalConsent.CONSENT_STRING_RESOURCES);
|
||||
result.putBoolean(KEY_FINGERPRINT_CONSENT,
|
||||
mConsentFingerprint != null ? mConsentFingerprint : false);
|
||||
result.putIntArray(KEY_FINGERPRINT_CONSENT_STRINGS,
|
||||
FingerprintEnrollParentalConsent.CONSENT_STRING_RESOURCES);
|
||||
result.putBoolean(KEY_IRIS_CONSENT, false);
|
||||
result.putIntArray(KEY_IRIS_CONSENT_STRINGS, new int[0]);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,21 @@ import com.android.settings.R;
|
||||
*/
|
||||
public class FaceEnrollParentalConsent extends FaceEnrollIntroduction {
|
||||
|
||||
/**
|
||||
* List of string resources to log when recording the result of this activity in gms.
|
||||
* This must be updated when any strings are added/removed.
|
||||
*/
|
||||
public static final int[] CONSENT_STRING_RESOURCES = new int[] {
|
||||
R.string.security_settings_face_enroll_consent_introduction_title,
|
||||
R.string.security_settings_face_enroll_introduction_consent_message,
|
||||
R.string.security_settings_face_enroll_introduction_info_consent_glasses,
|
||||
R.string.security_settings_face_enroll_introduction_info_consent_looking,
|
||||
R.string.security_settings_face_enroll_introduction_info_consent_gaze,
|
||||
R.string.security_settings_face_enroll_introduction_how_consent_message,
|
||||
R.string.security_settings_face_enroll_introduction_control_consent_title,
|
||||
R.string.security_settings_face_enroll_introduction_control_consent_message
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
@@ -33,6 +33,20 @@ import com.android.settings.R;
|
||||
*/
|
||||
public class FingerprintEnrollParentalConsent extends FingerprintEnrollIntroduction {
|
||||
|
||||
/**
|
||||
* List of string resources to log when recording the result of this activity in gms.
|
||||
* This must be updated when any strings are added/removed.
|
||||
*/
|
||||
public static final int[] CONSENT_STRING_RESOURCES = new int[] {
|
||||
R.string.security_settings_fingerprint_enroll_consent_introduction_title,
|
||||
R.string.security_settings_fingerprint_enroll_introduction_consent_message,
|
||||
R.string.security_settings_fingerprint_enroll_introduction_footer_title_consent_1,
|
||||
R.string.security_settings_fingerprint_v2_enroll_introduction_footer_message_consent_2,
|
||||
R.string.security_settings_fingerprint_v2_enroll_introduction_footer_message_consent_3,
|
||||
R.string.security_settings_fingerprint_v2_enroll_introduction_footer_message_consent_4,
|
||||
R.string.security_settings_fingerprint_v2_enroll_introduction_footer_message_consent_5
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
@@ -22,6 +22,8 @@ import static android.provider.Settings.Secure.CAMERA_AUTOROTATE;
|
||||
import static com.android.settings.display.SmartAutoRotateController.hasSufficientPermission;
|
||||
import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -37,7 +39,9 @@ import androidx.preference.PreferenceScreen;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.view.RotationPolicy;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.TogglePreferenceController;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||
import com.android.settingslib.core.lifecycle.events.OnStart;
|
||||
import com.android.settingslib.core.lifecycle.events.OnStop;
|
||||
@@ -45,12 +49,10 @@ import com.android.settingslib.core.lifecycle.events.OnStop;
|
||||
/**
|
||||
* SmartAutoRotatePreferenceController provides auto rotate summary in display settings
|
||||
*/
|
||||
public class SmartAutoRotatePreferenceController extends BasePreferenceController
|
||||
public class SmartAutoRotatePreferenceController extends TogglePreferenceController
|
||||
implements LifecycleObserver, OnStart, OnStop {
|
||||
|
||||
private RotationPolicy.RotationPolicyListener mRotationPolicyListener;
|
||||
private Preference mPreference;
|
||||
|
||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
private final SensorPrivacyManager mPrivacyManager;
|
||||
private final PowerManager mPowerManager;
|
||||
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||
@@ -60,12 +62,16 @@ public class SmartAutoRotatePreferenceController extends BasePreferenceControlle
|
||||
}
|
||||
};
|
||||
|
||||
private RotationPolicy.RotationPolicyListener mRotationPolicyListener;
|
||||
private Preference mPreference;
|
||||
|
||||
public SmartAutoRotatePreferenceController(Context context, String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
mPrivacyManager = SensorPrivacyManager.getInstance(context);
|
||||
mPrivacyManager
|
||||
.addSensorPrivacyListener(CAMERA, (sensor, enabled) -> refreshSummary(mPreference));
|
||||
mPowerManager = context.getSystemService(PowerManager.class);
|
||||
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -74,12 +80,28 @@ public class SmartAutoRotatePreferenceController extends BasePreferenceControlle
|
||||
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSliceable() {
|
||||
return TextUtils.equals(getPreferenceKey(), "auto_rotate");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPublicSlice() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayPreference(PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
mPreference = screen.findPreference(getPreferenceKey());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateState(Preference preference) {
|
||||
super.updateState(preference);
|
||||
refreshSummary(mPreference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
mContext.registerReceiver(mReceiver,
|
||||
@@ -89,7 +111,7 @@ public class SmartAutoRotatePreferenceController extends BasePreferenceControlle
|
||||
@Override
|
||||
public void onChange() {
|
||||
if (mPreference != null) {
|
||||
refreshSummary(mPreference);
|
||||
updateState(mPreference);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -121,6 +143,20 @@ public class SmartAutoRotatePreferenceController extends BasePreferenceControlle
|
||||
return mPowerManager.isPowerSaveMode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChecked() {
|
||||
return !RotationPolicy.isRotationLocked(mContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setChecked(boolean isChecked) {
|
||||
final boolean isLocked = !isChecked;
|
||||
mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ROTATION_LOCK,
|
||||
isLocked);
|
||||
RotationPolicy.setRotationLock(mContext, isLocked);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
int activeStringId = R.string.auto_rotate_option_off;
|
||||
|
||||
@@ -208,6 +208,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
||||
return;
|
||||
}
|
||||
|
||||
// To prevent launchDeepLinkIntentToRight again for configuration change.
|
||||
intent.setAction(null);
|
||||
|
||||
targetIntent.setFlags(targetIntent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
|
||||
targetIntent.putExtra(EXTRA_IS_FROM_SETTINGS_HOMEPAGE, true);
|
||||
|
||||
Reference in New Issue
Block a user