Merge "Fix the highlight error and remove the empty card" into sc-v2-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index dc11920..5edf63b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -197,7 +197,6 @@
</receiver>
<activity android:name=".SubSettings"
- android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|smallestScreenSize"
android:theme="@style/Theme.SubSettings" />
<activity android:name=".Settings$CreateShortcutActivity"
@@ -1258,6 +1257,23 @@
</activity>
<activity
+ android:name=".Settings$BlueToothPairingActivity"
+ android:label="@string/bluetooth_pairing_page_title"
+ android:permission="android.permission.BLUETOOTH_SCAN"
+ android:exported="true">
+ <intent-filter android:priority="1">
+ <action android:name="android.settings.BLUETOOTH_PAIRING_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.bluetooth.BluetoothPairingDetail" />
+ <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
+ android:value="@string/menu_key_connected_devices"/>
+ <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+ android:value="true" />
+ </activity>
+
+ <activity
android:name="SettingsLicenseActivity"
android:label="@string/settings_license_activity_title"
android:exported="true"
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 893c0ad..ebfff6b 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -123,6 +123,8 @@
public static class AccessibilityDaltonizerSettingsActivity extends SettingsActivity { /* empty */ }
/** Activity for lockscreen settings. */
public static class LockScreenSettingsActivity extends SettingsActivity { /* empty */ }
+ /** Activity for bluetooth pairing settings. */
+ public static class BlueToothPairingActivity extends SettingsActivity { /* empty */ }
/** Activity for Reduce Bright Colors. */
public static class ReduceBrightColorsSettingsActivity extends SettingsActivity { /* empty */ }
/** Activity for the security dashboard. */
diff --git a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
index 037f584..2ce2206 100644
--- a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
+++ b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
@@ -53,6 +53,7 @@
public class RemoveAccountPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, OnClickListener {
+ private static final String TAG = "RemoveAccountPrefController";
private static final String KEY_REMOVE_ACCOUNT = "remove_account";
private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -175,10 +176,11 @@
| IOException
| AuthenticatorException e) {
// handled below
- }
- if (failed) {
+ Log.w(TAG, "Remove account error: " + e);
RemoveAccountFailureDialog.show(getTargetFragment());
- } else {
+ }
+ Log.i(TAG, "failed: " + failed);
+ if (!failed) {
targetActivity.finish();
}
}, null, mUserHandle);
@@ -210,7 +212,7 @@
final Context context = getActivity();
return new AlertDialog.Builder(context)
- .setTitle(R.string.really_remove_account_title)
+ .setTitle(R.string.remove_account_label)
.setMessage(R.string.remove_account_failed)
.setPositiveButton(android.R.string.ok, null)
.create();
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
index 74ea27b..eadb5b8 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
@@ -19,10 +19,12 @@
import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.Intent;
+import android.hardware.SensorPrivacyManager;
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.face.FaceManager;
import android.hardware.face.FaceSensorPropertiesInternal;
import android.os.Bundle;
+import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -34,10 +36,12 @@
import com.android.settings.R;
import com.android.settings.Utils;
+import com.android.settings.biometrics.BiometricEnrollActivity;
import com.android.settings.biometrics.BiometricEnrollIntroduction;
import com.android.settings.biometrics.BiometricUtils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.password.ChooseLockSettingsHelper;
+import com.android.settings.utils.SensorPrivacyManagerHelper;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.google.android.setupcompat.template.FooterButton;
@@ -57,6 +61,7 @@
private FaceFeatureProvider mFaceFeatureProvider;
@Nullable private FooterButton mPrimaryFooterButton;
@Nullable private FooterButton mSecondaryFooterButton;
+ @Nullable private SensorPrivacyManager mSensorPrivacyManager;
@Override
protected void onCancelButtonClick(View view) {
@@ -150,6 +155,14 @@
});
}
}
+
+ mSensorPrivacyManager = getApplicationContext()
+ .getSystemService(SensorPrivacyManager.class);
+ final SensorPrivacyManagerHelper helper = SensorPrivacyManagerHelper
+ .getInstance(getApplicationContext());
+ final boolean cameraPrivacyEnabled = helper
+ .isSensorBlocked(SensorPrivacyManager.Sensors.CAMERA, mUserId);
+ Log.v(TAG, "cameraPrivacyEnabled : " + cameraPrivacyEnabled);
}
protected boolean generateChallengeOnCreate() {
@@ -309,6 +322,28 @@
}
@Override
+ protected void onNextButtonClick(View view) {
+ final boolean parentelConsentRequired =
+ getIntent()
+ .getBooleanExtra(BiometricEnrollActivity.EXTRA_REQUIRE_PARENTAL_CONSENT, false);
+ final boolean cameraPrivacyEnabled = SensorPrivacyManagerHelper
+ .getInstance(getApplicationContext())
+ .isSensorBlocked(SensorPrivacyManager.Sensors.CAMERA, mUserId);
+ final boolean isSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
+ final boolean isSettingUp = isSetupWizard || (parentelConsentRequired
+ && !WizardManagerHelper.isUserSetupComplete(this));
+ if (cameraPrivacyEnabled && !isSettingUp) {
+ if (mSensorPrivacyManager == null) {
+ mSensorPrivacyManager = getApplicationContext()
+ .getSystemService(SensorPrivacyManager.class);
+ }
+ mSensorPrivacyManager.showSensorUseDialog(SensorPrivacyManager.Sensors.CAMERA);
+ } else {
+ super.onNextButtonClick(view);
+ }
+ }
+
+ @Override
@NonNull
protected FooterButton getPrimaryFooterButton() {
if (mPrimaryFooterButton == null) {
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index 800800e..9f819a6 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -68,6 +68,7 @@
import com.android.settings.biometrics.face.FaceSettings;
import com.android.settings.biometrics.fingerprint.FingerprintSettings;
import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment;
+import com.android.settings.bluetooth.BluetoothPairingDetail;
import com.android.settings.bugreporthandler.BugReportHandlerPicker;
import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
@@ -175,6 +176,7 @@
public static final String[] ENTRY_FRAGMENTS = {
AdvancedConnectedDeviceDashboardFragment.class.getName(),
CreateShortcut.class.getName(),
+ BluetoothPairingDetail.class.getName(),
WifiSettings.class.getName(),
WifiNetworkDetailsFragment.class.getName(),
ConfigureWifiSettings.class.getName(),
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 408ffbe..0c063db 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -1503,11 +1503,15 @@
}
// Shows display name of each active subscription.
- final String[] displayNames = SubscriptionUtil.getUniqueSubscriptionDisplayNames(
- mContext).values().stream().toArray(String[]::new);
- mEapSimSpinner.setAdapter(getSpinnerAdapter(displayNames));
+ final ArrayList<CharSequence> displayNames = new ArrayList<>();
+ for (SubscriptionInfo activeSubInfo : mActiveSubscriptionInfos) {
+ displayNames.add(
+ SubscriptionUtil.getUniqueSubscriptionDisplayName(activeSubInfo, mContext));
+ }
+ mEapSimSpinner.setAdapter(
+ getSpinnerAdapter(displayNames.toArray(new String[displayNames.size()])));
mEapSimSpinner.setSelection(0 /* position */);
- if (displayNames.length == 1) {
+ if (displayNames.size() == 1) {
mEapSimSpinner.setEnabled(false);
}
}
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index 011c970..127c882 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -1482,11 +1482,15 @@
}
// Shows display name of each active subscription.
- final String[] displayNames = SubscriptionUtil.getUniqueSubscriptionDisplayNames(
- mContext).values().stream().toArray(String[]::new);
- mEapSimSpinner.setAdapter(getSpinnerAdapter(displayNames));
+ final ArrayList<CharSequence> displayNames = new ArrayList<>();
+ for (SubscriptionInfo activeSubInfo : mActiveSubscriptionInfos) {
+ displayNames.add(
+ SubscriptionUtil.getUniqueSubscriptionDisplayName(activeSubInfo, mContext));
+ }
+ mEapSimSpinner.setAdapter(
+ getSpinnerAdapter(displayNames.toArray(new String[displayNames.size()])));
mEapSimSpinner.setSelection(0 /* position */);
- if (displayNames.length == 1) {
+ if (displayNames.size() == 1) {
mEapSimSpinner.setEnabled(false);
}
}