Merge "Add a new empty dashboard for Network & Internet."
diff --git a/res/values/config.xml b/res/values/config.xml
index 7513cef..6d56e18 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -52,6 +52,10 @@
<string name="gesture_double_twist_sensor_name" translatable="false"></string>
<string name="gesture_double_twist_sensor_vendor" translatable="false"></string>
+ <!-- Pickup sensor name and vendor used by gesture setting -->
+ <string name="gesture_pickup_sensor_name" translatable="false"></string>
+ <string name="gesture_pickup_sensor_vendor" translatable="false"></string>
+
<!-- When true enable gesture setting. -->
<bool name="config_gesture_settings_enabled">false</bool>
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index cd3c5ee..d84b008 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -328,11 +328,6 @@
android:title="@string/strict_mode"
android:summary="@string/strict_mode_summary"/>
- <SwitchPreference
- android:key="show_cpu_usage"
- android:title="@string/show_cpu_usage"
- android:summary="@string/show_cpu_usage_summary"/>
-
<ListPreference
android:key="track_frame_time"
android:title="@string/track_frame_time"
diff --git a/res/xml/ia_display_settings.xml b/res/xml/ia_display_settings.xml
new file mode 100644
index 0000000..7f1af9a
--- /dev/null
+++ b/res/xml/ia_display_settings.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+ android:title="@string/display_settings"
+ settings:keywords="@string/keywords_display">
+
+ <PreferenceScreen
+ android:key="brightness"
+ android:title="@string/brightness"
+ settings:keywords="@string/keywords_display_brightness_level">
+ <intent android:action="android.intent.action.SHOW_BRIGHTNESS_DIALOG" />
+ </PreferenceScreen>
+
+ <com.android.settingslib.RestrictedPreference
+ android:key="wallpaper"
+ android:title="@string/wallpaper_settings_title"
+ settings:keywords="@string/keywords_display_wallpaper"
+ settings:useAdminDisabledSummary="true" >
+ <intent
+ android:targetPackage="@string/config_wallpaper_picker_package"
+ android:targetClass="@string/config_wallpaper_picker_class" />
+ </com.android.settingslib.RestrictedPreference>
+
+ <com.android.settings.display.NightDisplayPreference
+ android:key="night_display"
+ android:title="@string/night_display_title"
+ android:fragment="com.android.settings.display.NightDisplaySettings"
+ android:widgetLayout="@null"
+ settings:keywords="@string/keywords_display_night_display" />
+
+ <com.android.settings.TimeoutListPreference
+ android:key="screen_timeout"
+ android:title="@string/screen_timeout"
+ android:summary="@string/screen_timeout_summary"
+ android:entries="@array/screen_timeout_entries"
+ android:entryValues="@array/screen_timeout_values" />
+
+ <DropDownPreference
+ android:key="auto_rotate"
+ android:summary="%s"
+ android:title="@string/display_auto_rotate_title" />
+
+ <SwitchPreference
+ android:key="auto_brightness"
+ android:title="@string/auto_brightness_title"
+ settings:keywords="@string/keywords_display_auto_brightness"
+ android:summary="@string/auto_brightness_summary" />
+
+ <PreferenceScreen
+ android:key="font_size"
+ android:title="@string/title_font_size"
+ android:fragment="com.android.settings.accessibility.ToggleFontSizePreferenceFragment"
+ settings:keywords="@string/keywords_display_font_size" />
+
+ <com.android.settings.display.ScreenZoomPreference
+ android:key="screen_zoom"
+ android:title="@string/screen_zoom_title"
+ settings:keywords="@string/screen_zoom_keywords" />
+
+ <PreferenceScreen
+ android:key="screensaver"
+ android:title="@string/screensaver_settings_title"
+ android:fragment="com.android.settings.DreamSettings" />
+
+ <!-- Hide night mode for now
+ <ListPreference
+ android:key="night_mode"
+ android:title="@string/night_mode_title"
+ settings:keywords="@string/keywords_display_night_mode"
+ android:summary="@string/night_mode_summary"
+ android:entries="@array/night_mode_entries"
+ android:entryValues="@array/night_mode_values" /> -->
+
+ <SwitchPreference
+ android:key="camera_gesture"
+ android:title="@string/camera_gesture_title"
+ android:summary="@string/camera_gesture_desc" />
+
+ <SwitchPreference
+ android:key="lift_to_wake"
+ android:title="@string/lift_to_wake_title" />
+
+ <SwitchPreference
+ android:key="doze"
+ android:title="@string/doze_title"
+ android:summary="@string/doze_summary" />
+
+ <SwitchPreference
+ android:key="tap_to_wake"
+ android:title="@string/tap_to_wake"
+ android:summary="@string/tap_to_wake_summary" />
+
+ <PreferenceScreen
+ android:key="wifi_display"
+ android:title="@string/wifi_display_settings_title"
+ settings:keywords="@string/keywords_display_cast_screen"
+ android:fragment="com.android.settings.wfd.WifiDisplaySettings" />
+
+ <DropDownPreference
+ android:key="vr_display_pref"
+ android:summary="%s"
+ android:title="@string/display_vr_pref_title" />
+
+</PreferenceScreen>
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index a9e48dc..9349c13 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -142,8 +142,7 @@
super.onCreate(savedInstanceState);
String chooseLockAction = getActivity().getIntent().getAction();
- mFingerprintManager =
- (FingerprintManager) getActivity().getSystemService(Context.FINGERPRINT_SERVICE);
+ mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity());
mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mKeyStore = KeyStore.getInstance();
mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity());
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index a4ced35..e41502c 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -144,7 +144,6 @@
private static final String DISABLE_OVERLAYS_KEY = "disable_overlays";
private static final String SIMULATE_COLOR_SPACE = "simulate_color_space";
private static final String USB_AUDIO_KEY = "usb_audio";
- private static final String SHOW_CPU_USAGE_KEY = "show_cpu_usage";
private static final String FORCE_HARDWARE_UI_KEY = "force_hw_ui";
private static final String FORCE_MSAA_KEY = "force_msaa";
private static final String TRACK_FRAME_TIME_KEY = "track_frame_time";
@@ -274,7 +273,6 @@
private SwitchPreference mShowTouches;
private SwitchPreference mShowScreenUpdates;
private SwitchPreference mDisableOverlays;
- private SwitchPreference mShowCpuUsage;
private SwitchPreference mForceHardwareUi;
private SwitchPreference mForceMsaa;
private SwitchPreference mShowHwScreenUpdates;
@@ -423,7 +421,6 @@
mShowTouches = findAndInitSwitchPref(SHOW_TOUCHES_KEY);
mShowScreenUpdates = findAndInitSwitchPref(SHOW_SCREEN_UPDATES_KEY);
mDisableOverlays = findAndInitSwitchPref(DISABLE_OVERLAYS_KEY);
- mShowCpuUsage = findAndInitSwitchPref(SHOW_CPU_USAGE_KEY);
mForceHardwareUi = findAndInitSwitchPref(FORCE_HARDWARE_UI_KEY);
mForceMsaa = findAndInitSwitchPref(FORCE_MSAA_KEY);
mTrackFrameTime = addListPreference(TRACK_FRAME_TIME_KEY);
@@ -696,7 +693,6 @@
updatePointerLocationOptions();
updateShowTouchesOptions();
updateFlingerOptions();
- updateCpuUsageOptions();
updateHardwareUiOptions();
updateMsaaOptions();
updateTrackFrameTimeOptions();
@@ -1719,25 +1715,6 @@
}
}
- private void updateCpuUsageOptions() {
- updateSwitchPreference(mShowCpuUsage,
- Settings.Global.getInt(getActivity().getContentResolver(),
- Settings.Global.SHOW_PROCESSES, 0) != 0);
- }
-
- private void writeCpuUsageOptions() {
- boolean value = mShowCpuUsage.isChecked();
- Settings.Global.putInt(getActivity().getContentResolver(),
- Settings.Global.SHOW_PROCESSES, value ? 1 : 0);
- Intent service = (new Intent())
- .setClassName("com.android.systemui", "com.android.systemui.LoadAverageService");
- if (value) {
- getActivity().startService(service);
- } else {
- getActivity().stopService(service);
- }
- }
-
private void writeImmediatelyDestroyActivitiesOptions() {
try {
ActivityManagerNative.getDefault().setAlwaysFinish(
@@ -2026,8 +2003,6 @@
writeShowUpdatesOption();
} else if (preference == mDisableOverlays) {
writeDisableOverlaysOption();
- } else if (preference == mShowCpuUsage) {
- writeCpuUsageOptions();
} else if (preference == mImmediatelyDestroyActivities) {
writeImmediatelyDestroyActivitiesOptions();
} else if (preference == mShowAllANRs) {
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index 2e8b926..d58f100 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -38,6 +38,7 @@
import com.android.settings.display.TimeoutPreferenceController;
import com.android.settings.display.VrDisplayPreferenceController;
import com.android.settings.display.WallpaperPreferenceController;
+import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settingslib.drawer.CategoryKey;
@@ -67,7 +68,11 @@
@Override
protected int getPreferenceScreenResId() {
- return R.xml.display_settings;
+ if (mDashboardFeatureProvider.isEnabled()) {
+ return R.xml.ia_display_settings;
+ } else {
+ return R.xml.display_settings;
+ }
}
@Override
@@ -139,12 +144,18 @@
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
boolean enabled) {
- ArrayList<SearchIndexableResource> result = new ArrayList<>();
+ final ArrayList<SearchIndexableResource> result = new ArrayList<>();
- SearchIndexableResource sir = new SearchIndexableResource(context);
- sir.xmlResId = R.xml.display_settings;
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ final boolean useNewIA = FeatureFactory.getFactory(context)
+ .getDashboardFeatureProvider(context)
+ .isEnabled();
+ if (useNewIA) {
+ sir.xmlResId = R.xml.ia_display_settings;
+ } else {
+ sir.xmlResId = R.xml.display_settings;
+ }
result.add(sir);
-
return result;
}
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 9af91cc..5f90353 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -904,8 +904,7 @@
}
// Fingerprint
- FingerprintManager fpm =
- (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
+ final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(context);
if (fpm != null && fpm.isHardwareDetected()) {
// This catches the title which can be overloaded in an overlay
data = new SearchIndexableRaw(context);
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 1186c46..f8520d8 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -44,6 +44,7 @@
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.hardware.fingerprint.FingerprintManager;
import android.net.ConnectivityManager;
import android.net.LinkProperties;
import android.net.Uri;
@@ -1175,4 +1176,12 @@
}
return null;
}
+
+ public static FingerprintManager getFingerprintManagerOrNull(Context context) {
+ if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
+ return context.getSystemService(FingerprintManager.class);
+ } else {
+ return null;
+ }
+ }
}
diff --git a/src/com/android/settings/applications/ProcStatsPackageEntry.java b/src/com/android/settings/applications/ProcStatsPackageEntry.java
index ef74bc6..dcf87fc 100644
--- a/src/com/android/settings/applications/ProcStatsPackageEntry.java
+++ b/src/com/android/settings/applications/ProcStatsPackageEntry.java
@@ -22,6 +22,7 @@
import android.os.Parcel;
import android.os.Parcelable;
+import android.util.Log;
import com.android.settings.R;
import com.android.settings.Utils;
@@ -127,6 +128,7 @@
mUiLabel = mUiTargetApp.loadLabel(pm).toString();
}
} catch (PackageManager.NameNotFoundException e) {
+ Log.d(TAG, "could not find package: " + mPackage);
}
}
diff --git a/src/com/android/settings/applications/ProcessStatsPreference.java b/src/com/android/settings/applications/ProcessStatsPreference.java
index 996ed15..4ee0a04 100644
--- a/src/com/android/settings/applications/ProcessStatsPreference.java
+++ b/src/com/android/settings/applications/ProcessStatsPreference.java
@@ -22,9 +22,11 @@
import android.text.TextUtils;
import android.text.format.Formatter;
+import android.util.Log;
import com.android.settings.AppProgressPreference;
public class ProcessStatsPreference extends AppProgressPreference {
+ static final String TAG = "ProcessStatsPreference";
private ProcStatsPackageEntry mEntry;
@@ -35,11 +37,15 @@
public void init(ProcStatsPackageEntry entry, PackageManager pm, double maxMemory,
double weightToRam, double totalScale, boolean avg) {
mEntry = entry;
- setTitle(TextUtils.isEmpty(entry.mUiLabel) ? entry.mPackage : entry.mUiLabel);
+ String title = TextUtils.isEmpty(entry.mUiLabel) ? entry.mPackage : entry.mUiLabel;
+ setTitle(title);
+ if (TextUtils.isEmpty(title)) {
+ Log.d(TAG, "PackageEntry contained no package name or uiLabel");
+ }
if (entry.mUiTargetApp != null) {
setIcon(entry.mUiTargetApp.loadIcon(pm));
} else {
- setIcon(new ColorDrawable(0));
+ setIcon(pm.getDefaultActivityIcon());
}
boolean statsForeground = entry.mRunWeight > entry.mBgWeight;
double amount = avg ? (statsForeground ? entry.mRunWeight : entry.mBgWeight) * weightToRam
diff --git a/src/com/android/settings/dashboard/SuggestionsChecks.java b/src/com/android/settings/dashboard/SuggestionsChecks.java
index b816a79..78f21ea 100644
--- a/src/com/android/settings/dashboard/SuggestionsChecks.java
+++ b/src/com/android/settings/dashboard/SuggestionsChecks.java
@@ -35,6 +35,7 @@
import com.android.settings.Settings.ScreenLockSuggestionActivity;
import com.android.settings.Settings.WifiCallingSuggestionActivity;
import com.android.settings.Settings.ZenModeAutomationSuggestionActivity;
+import com.android.settings.Utils;
import com.android.settings.WallpaperSuggestionActivity;
import com.android.settingslib.drawer.Tile;
@@ -75,7 +76,7 @@
}
private boolean isNotSingleFingerprintEnrolled() {
- FingerprintManager manager = mContext.getSystemService(FingerprintManager.class);
+ FingerprintManager manager = Utils.getFingerprintManagerOrNull(mContext);
return manager == null || manager.getEnrolledFingerprints().size() != 1;
}
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
index 33768c5..f2fda6b 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
@@ -24,6 +24,7 @@
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R;
+import com.android.settings.Utils;
import com.android.settings.fingerprint.FingerprintEnrollSidecar.Listener;
/**
@@ -155,7 +156,7 @@
setResult(RESULT_TIMEOUT);
finish();
} else {
- FingerprintManager fpm = getSystemService(FingerprintManager.class);
+ FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
int enrolled = fpm.getEnrolledFingerprints().size();
int max = getResources().getInteger(
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
@@ -172,7 +173,7 @@
}
private void launchConfirmLock() {
- long challenge = getSystemService(FingerprintManager.class).preEnroll();
+ long challenge = Utils.getFingerprintManagerOrNull(this).preEnroll();
ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this);
boolean launchedConfirmationActivity = false;
if (mUserId == UserHandle.USER_NULL) {
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
index 75557a0..94d2570 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
@@ -16,16 +16,16 @@
package com.android.settings.fingerprint;
-import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
-import android.os.UserHandle;
import android.view.View;
import android.widget.Button;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R;
+import com.android.settings.Utils;
/**
* Activity which concludes fingerprint enrollment.
@@ -39,7 +39,7 @@
setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title);
Button addButton = (Button) findViewById(R.id.add_another_button);
- FingerprintManager fpm = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);
+ final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
int enrolled = fpm.getEnrolledFingerprints(mUserId).size();
int max = getResources().getInteger(
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
index b5be4b6..697c44a 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
@@ -32,6 +32,7 @@
import com.android.settings.ChooseLockGeneric;
import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R;
+import com.android.settings.Utils;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.RestrictedLockUtils;
import com.android.setupwizardlib.span.LinkSpan;
@@ -97,7 +98,7 @@
private void launchChooseLock() {
Intent intent = getChooseLockIntent();
- long challenge = getSystemService(FingerprintManager.class).preEnroll();
+ long challenge = Utils.getFingerprintManagerOrNull(this).preEnroll();
intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS, true);
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
index 9b574b6..24061b4 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
@@ -27,6 +27,7 @@
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.ChooseLockSettingsHelper;
+import com.android.settings.Utils;
import com.android.settings.core.InstrumentedFragment;
/**
@@ -54,7 +55,7 @@
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
- mFingerprintManager = activity.getSystemService(FingerprintManager.class);
+ mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
mToken = activity.getIntent().getByteArrayExtra(
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
mUserId = activity.getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.USER_NULL);
diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java
index b044ce3..3c1be40 100644
--- a/src/com/android/settings/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/fingerprint/FingerprintSettings.java
@@ -26,6 +26,7 @@
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.hardware.fingerprint.Fingerprint;
@@ -290,8 +291,7 @@
Intent.EXTRA_USER_ID, UserHandle.myUserId());
Activity activity = getActivity();
- mFingerprintManager = (FingerprintManager) activity.getSystemService(
- Context.FINGERPRINT_SERVICE);
+ mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
// Need to authenticate a session token if none
if (mToken == null && mLaunchedConfirm == false) {
@@ -820,8 +820,7 @@
}
public static Preference getFingerprintPreferenceForUser(Context context, final int userId) {
- FingerprintManager fpm = (FingerprintManager) context.getSystemService(
- Context.FINGERPRINT_SERVICE);
+ final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(context);
if (fpm == null || !fpm.isHardwareDetected()) {
Log.v(TAG, "No fingerprint hardware detected!!");
return null;
diff --git a/src/com/android/settings/fingerprint/FingerprintUiHelper.java b/src/com/android/settings/fingerprint/FingerprintUiHelper.java
index f7ec97b..655ce26 100644
--- a/src/com/android/settings/fingerprint/FingerprintUiHelper.java
+++ b/src/com/android/settings/fingerprint/FingerprintUiHelper.java
@@ -23,6 +23,7 @@
import android.widget.TextView;
import com.android.settings.R;
+import com.android.settings.Utils;
/**
* Small helper class to manage text/icon around fingerprint authentication UI.
@@ -41,7 +42,7 @@
public FingerprintUiHelper(ImageView icon, TextView errorTextView, Callback callback,
int userId) {
- mFingerprintManager = icon.getContext().getSystemService(FingerprintManager.class);
+ mFingerprintManager = Utils.getFingerprintManagerOrNull(icon.getContext());
mIcon = icon;
mErrorTextView = errorTextView;
mCallback = callback;
diff --git a/src/com/android/settings/gestures/GestureSettings.java b/src/com/android/settings/gestures/GestureSettings.java
index 32c8438..22cc496 100644
--- a/src/com/android/settings/gestures/GestureSettings.java
+++ b/src/com/android/settings/gestures/GestureSettings.java
@@ -82,7 +82,7 @@
// Ambient Display
boolean dozeEnabled = isDozeAvailable(context);
- if (dozeEnabled) {
+ if (dozeEnabled && isPickupAvailable(context)) {
int pickup = Secure.getInt(getContentResolver(), Secure.DOZE_PULSE_ON_PICK_UP, 1);
addPreference(PREF_KEY_PICK_UP, pickup != 0, PREF_ID_PICK_UP);
} else {
@@ -204,9 +204,19 @@
}
private static boolean isDoubleTwistAvailable(Context context) {
+ return hasSensor(context, R.string.gesture_double_twist_sensor_name,
+ R.string.gesture_double_twist_sensor_vendor);
+ }
+
+ private static boolean isPickupAvailable(Context context) {
+ return hasSensor(context, R.string.gesture_pickup_sensor_name,
+ R.string.gesture_pickup_sensor_vendor);
+ }
+
+ private static boolean hasSensor(Context context, int nameResId, int vendorResId) {
Resources resources = context.getResources();
- String name = resources.getString(R.string.gesture_double_twist_sensor_name);
- String vendor = resources.getString(R.string.gesture_double_twist_sensor_vendor);
+ String name = resources.getString(nameResId);
+ String vendor = resources.getString(vendorResId);
if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(vendor)) {
SensorManager sensorManager =
(SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
@@ -253,10 +263,10 @@
if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
result.add(PREF_KEY_DOUBLE_TAP_POWER);
}
- if (!isDozeAvailable(context)) {
+ if (!isDozeAvailable(context) || !isPickupAvailable(context)) {
result.add(PREF_KEY_PICK_UP);
- result.add(PREF_KEY_DOUBLE_TAP_SCREEN);
- } else if (!isDoubleTapAvailable(context)) {
+ }
+ if (!isDozeAvailable(context) || !isDoubleTapAvailable(context)) {
result.add(PREF_KEY_DOUBLE_TAP_SCREEN);
}
if (!isSystemUINavigationAvailable(context)) {
diff --git a/src/com/android/settings/notification/NotificationAccessSettings.java b/src/com/android/settings/notification/NotificationAccessSettings.java
index ad3daae..4a3aac5 100644
--- a/src/com/android/settings/notification/NotificationAccessSettings.java
+++ b/src/com/android/settings/notification/NotificationAccessSettings.java
@@ -18,33 +18,30 @@
import android.app.AlertDialog;
import android.app.Dialog;
-import android.app.DialogFragment;
+import android.app.Fragment;
import android.app.NotificationManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
-import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Settings;
import android.service.notification.NotificationListenerService;
+import android.util.Log;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.utils.ManagedServiceSettings;
-import com.android.settings.utils.ServiceListing;
public class NotificationAccessSettings extends ManagedServiceSettings {
private static final String TAG = NotificationAccessSettings.class.getSimpleName();
private static final Config CONFIG = getNotificationListenerConfig();
- private NotificationManager mNm;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- mNm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
}
private static Config getNotificationListenerConfig() {
@@ -70,14 +67,6 @@
return CONFIG;
}
- public static int getListenersCount(PackageManager pm) {
- return ServiceListing.getServicesCount(CONFIG, pm);
- }
-
- public static int getEnabledListenersCount(Context context) {
- return ServiceListing.getEnabledServicesCount(CONFIG, context);
- }
-
protected boolean setEnabled(ComponentName service, String title, boolean enable) {
if (!enable) {
if (!mServiceListing.isEnabled(service)) {
@@ -85,7 +74,7 @@
}
// show a friendly dialog
new FriendlyWarningDialogFragment()
- .setServiceInfo(service, title)
+ .setServiceInfo(service, title, this)
.show(getFragmentManager(), "friendlydialog");
return false;
} else {
@@ -93,25 +82,33 @@
}
}
- private static void deleteRules(final Context context, final String pkg) {
+ private static void disable(final Context context, final NotificationAccessSettings parent,
+ final ComponentName cn) {
+ parent.mServiceListing.setEnabled(cn, false);
AsyncTask.execute(new Runnable() {
@Override
public void run() {
final NotificationManager mgr = context.getSystemService(NotificationManager.class);
- mgr.removeAutomaticZenRules(pkg);
+
+ if (!mgr.isNotificationPolicyAccessGrantedForPackage(
+ cn.getPackageName())) {
+ mgr.removeAutomaticZenRules(cn.getPackageName());
+ }
}
});
}
- public class FriendlyWarningDialogFragment extends InstrumentedDialogFragment {
+ public static class FriendlyWarningDialogFragment extends InstrumentedDialogFragment {
static final String KEY_COMPONENT = "c";
static final String KEY_LABEL = "l";
- public FriendlyWarningDialogFragment setServiceInfo(ComponentName cn, String label) {
+ public FriendlyWarningDialogFragment setServiceInfo(ComponentName cn, String label,
+ Fragment target) {
Bundle args = new Bundle();
args.putString(KEY_COMPONENT, cn.flattenToString());
args.putString(KEY_LABEL, label);
setArguments(args);
+ setTargetFragment(target, 0);
return this;
}
@@ -122,25 +119,21 @@
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
final Bundle args = getArguments();
final String label = args.getString(KEY_LABEL);
final ComponentName cn = ComponentName.unflattenFromString(args
.getString(KEY_COMPONENT));
+ NotificationAccessSettings parent = (NotificationAccessSettings) getTargetFragment();
final String summary = getResources().getString(
R.string.notification_listener_disable_warning_summary, label);
- return new AlertDialog.Builder(mContext)
+ return new AlertDialog.Builder(getContext())
.setMessage(summary)
.setCancelable(true)
.setPositiveButton(R.string.notification_listener_disable_warning_confirm,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
- mServiceListing.setEnabled(cn, false);
- if (!mNm.isNotificationPolicyAccessGrantedForPackage(
- cn.getPackageName())) {
- deleteRules(mContext, cn.getPackageName());
- }
+ disable(getContext(), parent, cn);
}
})
.setNegativeButton(R.string.notification_listener_disable_warning_cancel,
diff --git a/src/com/android/settings/password/SetNewPasswordController.java b/src/com/android/settings/password/SetNewPasswordController.java
index 470723b..03afa76 100644
--- a/src/com/android/settings/password/SetNewPasswordController.java
+++ b/src/com/android/settings/password/SetNewPasswordController.java
@@ -30,6 +30,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.ChooseLockGeneric;
import com.android.settings.ChooseLockSettingsHelper;
+import com.android.settings.Utils;
/**
* Business logic for {@link SetNewPasswordActivity}.
@@ -54,7 +55,7 @@
public SetNewPasswordController(Context context, Ui ui) {
this(context.getUserId(),
context.getPackageManager(),
- (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE),
+ Utils.getFingerprintManagerOrNull(context),
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE),
ui);
}
diff --git a/src/com/android/settings/utils/ManagedServiceSettings.java b/src/com/android/settings/utils/ManagedServiceSettings.java
index bd839c8..31158b7 100644
--- a/src/com/android/settings/utils/ManagedServiceSettings.java
+++ b/src/com/android/settings/utils/ManagedServiceSettings.java
@@ -49,7 +49,6 @@
protected Context mContext;
private PackageManager mPM;
protected ServiceListing mServiceListing;
- private TextView mEmpty;
abstract protected Config getConfig();
@@ -153,7 +152,6 @@
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
final Bundle args = getArguments();
final String label = args.getString(KEY_LABEL);
final ComponentName cn = ComponentName.unflattenFromString(args