diff options
author | Adrian Roos <roosa@google.com> | 2014-08-05 19:41:11 +0200 |
---|---|---|
committer | Adrian Roos <roosa@google.com> | 2014-08-05 20:54:47 +0200 |
commit | 6f60f7ed22f94891156115643452a32d0324f65a (patch) | |
tree | 8892a14bba052afd911be3e8346d09b0be82cb4b | |
parent | f3dfd182e17c91ae4cd9e40a96308b83fdaefb49 (diff) | |
download | packages_apps_Settings-6f60f7ed22f94891156115643452a32d0324f65a.zip packages_apps_Settings-6f60f7ed22f94891156115643452a32d0324f65a.tar.gz packages_apps_Settings-6f60f7ed22f94891156115643452a32d0324f65a.tar.bz2 |
Ask about redacted notifications after setting up a secure lock
Bug: 14437890
Change-Id: I54cf355242375e8c7968c7d27c441fbd0a54cef2
-rw-r--r-- | AndroidManifest.xml | 1 | ||||
-rw-r--r-- | res/layout/redaction_interstitial.xml | 66 | ||||
-rw-r--r-- | res/values/strings.xml | 3 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockPassword.java | 2 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockPattern.java | 2 | ||||
-rw-r--r-- | src/com/android/settings/notification/RedactionInterstitial.java | 102 |
6 files changed, 176 insertions, 0 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 113dc1e..b9d2cdb 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1075,6 +1075,7 @@ </intent-filter> </activity> + <activity android:name=".notification.RedactionInterstitial" /> <activity android:name="ConfirmLockPattern"/> diff --git a/res/layout/redaction_interstitial.xml b/res/layout/redaction_interstitial.xml new file mode 100644 index 0000000..edcf5b8 --- /dev/null +++ b/res/layout/redaction_interstitial.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!-- + ~ Copyright (C) 2014 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 + --> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingStart="@dimen/settings_side_margin" + android:paddingEnd="@dimen/settings_side_margin"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:layout_marginStart="?android:attr/listPreferredItemPaddingStart" + android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd" + android:text="@string/lock_screen_notifications_interstitial_message" + android:textAppearance="?android:attr/textAppearanceMedium" /> + + <RadioGroup + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:layout_marginStart="?android:attr/listPreferredItemPaddingStart" + android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd" + android:checkedButton="@+id/redact_sensitive"> + + <RadioButton + android:id="@+id/show_all" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:text="@string/lock_screen_notifications_summary_show" /> + + <RadioButton + android:id="@+id/redact_sensitive" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:text="@string/lock_screen_notifications_summary_hide" /> + + <RadioButton + android:id="@+id/hide_all" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:text="@string/lock_screen_notifications_summary_disable" /> + + </RadioGroup> + +</LinearLayout>
\ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 75024e9..17def70 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5642,6 +5642,9 @@ [CHAR LIMIT=50] --> <string name="lock_screen_notifications_summary_disable">Don\'t show notifications at all</string> + <!-- Security > Choose PIN/PW/Pattern > Notification redaction interstitial: Message asking the user how they want their notifications to appear when the device is locked [CHAR LIMIT=NONE] --> + <string name="lock_screen_notifications_interstitial_message">When your device is locked, how do you want notifications to show?</string> + <!-- Sound & notification > Notification section: Title for the option managing notifications per application. [CHAR LIMIT=30] --> <string name="app_notifications_title">App notifications</string> diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java index 6dfb0f7..84758d8 100644 --- a/src/com/android/settings/ChooseLockPassword.java +++ b/src/com/android/settings/ChooseLockPassword.java @@ -19,6 +19,7 @@ package com.android.settings; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.PasswordEntryKeyboardHelper; import com.android.internal.widget.PasswordEntryKeyboardView; +import com.android.settings.notification.RedactionInterstitial; import android.app.Activity; import android.app.Fragment; @@ -408,6 +409,7 @@ public class ChooseLockPassword extends SettingsActivity { mLockPatternUtils.saveLockPassword(pin, mRequestedQuality, isFallback); getActivity().setResult(RESULT_FINISHED); getActivity().finish(); + startActivity(RedactionInterstitial.createStartIntent(getActivity())); } else { CharSequence tmp = mPasswordEntry.getText(); if (tmp != null) { diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java index c13cea2..9b3ce0a 100644 --- a/src/com/android/settings/ChooseLockPattern.java +++ b/src/com/android/settings/ChooseLockPattern.java @@ -22,6 +22,7 @@ import com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternView; import com.android.internal.widget.LockPatternView.Cell; +import com.android.settings.notification.RedactionInterstitial; import static com.android.internal.widget.LockPatternView.DisplayMode; @@ -532,6 +533,7 @@ public class ChooseLockPattern extends SettingsActivity { getActivity().setResult(RESULT_FINISHED); getActivity().finish(); + startActivity(RedactionInterstitial.createStartIntent(getActivity())); } } } diff --git a/src/com/android/settings/notification/RedactionInterstitial.java b/src/com/android/settings/notification/RedactionInterstitial.java new file mode 100644 index 0000000..f122188 --- /dev/null +++ b/src/com/android/settings/notification/RedactionInterstitial.java @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2014 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 + */ + +package com.android.settings.notification; + +import com.android.settings.R; +import com.android.settings.SettingsActivity; +import com.android.settings.SettingsPreferenceFragment; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.provider.Settings; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.RadioButton; + +public class RedactionInterstitial extends SettingsActivity { + + @Override + public Intent getIntent() { + Intent modIntent = new Intent(super.getIntent()); + modIntent.putExtra(EXTRA_SHOW_FRAGMENT, RedactionInterstitialFragment.class.getName()); + return modIntent; + } + + @Override + protected boolean isValidFragment(String fragmentName) { + return RedactionInterstitialFragment.class.getName().equals(fragmentName); + } + + public static Intent createStartIntent(Context ctx) { + return new Intent(ctx, RedactionInterstitial.class) + .putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, true) + .putExtra(EXTRA_PREFS_SET_BACK_TEXT, (String) null) + .putExtra(EXTRA_PREFS_SET_NEXT_TEXT, ctx.getString( + R.string.app_notifications_dialog_done)); + } + + public static class RedactionInterstitialFragment extends SettingsPreferenceFragment + implements View.OnClickListener { + + private RadioButton mShowAllButton; + private RadioButton mRedactSensitiveButton; + private RadioButton mHideAllButton; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.redaction_interstitial, container, false); + mShowAllButton = (RadioButton) view.findViewById(R.id.show_all); + mRedactSensitiveButton = (RadioButton) view.findViewById(R.id.redact_sensitive); + mHideAllButton = (RadioButton) view.findViewById(R.id.hide_all); + + mShowAllButton.setOnClickListener(this); + mRedactSensitiveButton.setOnClickListener(this); + mHideAllButton.setOnClickListener(this); + return view; + } + + @Override + public void onResume() { + super.onResume(); + loadFromSettings(); + } + + private void loadFromSettings() { + final boolean enabled = Settings.Global.getInt(getContentResolver(), + Settings.Global.LOCK_SCREEN_SHOW_NOTIFICATIONS, 0) != 0; + final boolean show = Settings.Secure.getInt(getContentResolver(), + Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0) != 0; + mShowAllButton.setChecked(enabled && show); + mRedactSensitiveButton.setChecked(enabled && !show); + mHideAllButton.setChecked(!enabled); + } + + @Override + public void onClick(View v) { + final boolean show = (v == mShowAllButton); + final boolean enabled = (v != mHideAllButton); + + Settings.Secure.putInt(getContentResolver(), + Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, show ? 1 : 0); + Settings.Global.putInt(getContentResolver(), + Settings.Global.LOCK_SCREEN_SHOW_NOTIFICATIONS, enabled ? 1 : 0); + } + } +}
\ No newline at end of file |