summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PermissionController/AndroidManifest.xml1
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/SafetyCenterConstants.java2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java22
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyEntryPreference.java11
-rw-r--r--PermissionController/src/com/android/permissioncontroller/safetycenter/ui/StaticSafetyEntryPreference.java11
-rw-r--r--SafetyCenter/Resources/shared_res/values/config.xml21
-rw-r--r--permissions/com.android.permissioncontroller.xml1
7 files changed, 64 insertions, 5 deletions
diff --git a/PermissionController/AndroidManifest.xml b/PermissionController/AndroidManifest.xml
index e081b81fa..b93e536df 100644
--- a/PermissionController/AndroidManifest.xml
+++ b/PermissionController/AndroidManifest.xml
@@ -62,6 +62,7 @@
<!--SYSTEM_APPLICATION_OVERLAY will be granted on T+, as installer protection is added in T -->
<uses-permission android:name="android.permission.SYSTEM_APPLICATION_OVERLAY"/>
<uses-permission android:name="android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS"/>
+ <uses-permission android:name="android.permission.START_TASKS_FROM_RECENTS" />
<application android:name="com.android.permissioncontroller.PermissionControllerApplication"
android:label="@string/app_name"
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/SafetyCenterConstants.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/SafetyCenterConstants.java
index a5e773f76..cbf683ecf 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/SafetyCenterConstants.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/SafetyCenterConstants.java
@@ -31,4 +31,6 @@ public class SafetyCenterConstants {
"expand_issue_group_qs_fragment_key";
public static final String EXTRA_NAVIGATION_SOURCE = "navigation_source_intent_extra";
+
+ public static final int INVALID_TASK_ID = -1;
}
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
index 5b5d82937..148340fbc 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
@@ -19,6 +19,7 @@ package com.android.permissioncontroller.safetycenter.ui;
import static android.os.Build.VERSION_CODES.TIRAMISU;
import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
+import static com.android.permissioncontroller.safetycenter.SafetyCenterConstants.INVALID_TASK_ID;
import static com.android.permissioncontroller.safetycenter.SafetyCenterConstants.QUICK_SETTINGS_SAFETY_CENTER_FRAGMENT;
import static java.util.Objects.requireNonNull;
@@ -55,8 +56,10 @@ import com.android.permissioncontroller.R;
import com.android.permissioncontroller.safetycenter.ui.model.LiveSafetyCenterViewModelFactory;
import com.android.permissioncontroller.safetycenter.ui.model.SafetyCenterUiData;
import com.android.permissioncontroller.safetycenter.ui.model.SafetyCenterViewModel;
+import com.android.safetycenter.internaldata.SafetyCenterIds;
import com.android.safetycenter.resources.SafetyCenterResourcesContext;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -79,6 +82,7 @@ public final class SafetyCenterDashboardFragment extends PreferenceFragmentCompa
private PreferenceGroup mEntriesGroup;
private PreferenceGroup mStaticEntriesGroup;
private SafetyCenterViewModel mViewModel;
+ private List<String> mSameTaskEntries;
private boolean mIsQuickSettingsFragment;
public SafetyCenterDashboardFragment() {
@@ -133,6 +137,8 @@ public final class SafetyCenterDashboardFragment extends PreferenceFragmentCompa
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.safety_center_dashboard, rootKey);
+ mSameTaskEntries = Arrays.asList(new SafetyCenterResourcesContext(getContext())
+ .getStringByName("config_same_task_safety_source_ids").split(","));
if (getArguments() != null) {
mIsQuickSettingsFragment =
@@ -319,6 +325,7 @@ public final class SafetyCenterDashboardFragment extends PreferenceFragmentCompa
mEntriesGroup.addPreference(
new SafetyEntryPreference(
context,
+ getTaskIdForEntry(entry),
entry,
PositionInCardList.calculate(isFirstElement, isLastElement),
mViewModel));
@@ -349,7 +356,11 @@ public final class SafetyCenterDashboardFragment extends PreferenceFragmentCompa
isCardEnd);
mEntriesGroup.addPreference(
new SafetyEntryPreference(
- context, entries.get(i), positionInCardList, mViewModel));
+ context,
+ getTaskIdForEntry(entries.get(i)),
+ entries.get(i),
+ positionInCardList,
+ mViewModel));
}
}
@@ -363,8 +374,15 @@ public final class SafetyCenterDashboardFragment extends PreferenceFragmentCompa
mStaticEntriesGroup.addPreference(category);
for (SafetyCenterStaticEntry entry : group.getStaticEntries()) {
- category.addPreference(new StaticSafetyEntryPreference(context, entry, mViewModel));
+ category.addPreference(
+ new StaticSafetyEntryPreference(
+ context, requireActivity().getTaskId(), entry, mViewModel));
}
}
}
+
+ private int getTaskIdForEntry(SafetyCenterEntry entry) {
+ String issueId = SafetyCenterIds.entryIdFromString(entry.getId()).getSafetySourceId();
+ return mSameTaskEntries.contains(issueId) ? requireActivity().getTaskId() : INVALID_TASK_ID;
+ }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyEntryPreference.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyEntryPreference.java
index 71f976be1..5ebc6a52f 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyEntryPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyEntryPreference.java
@@ -18,6 +18,9 @@ package com.android.permissioncontroller.safetycenter.ui;
import static android.os.Build.VERSION_CODES.TIRAMISU;
+import static com.android.permissioncontroller.safetycenter.SafetyCenterConstants.INVALID_TASK_ID;
+
+import android.app.ActivityOptions;
import android.app.PendingIntent;
import android.content.Context;
import android.safetycenter.SafetyCenterEntry;
@@ -46,6 +49,7 @@ public final class SafetyEntryPreference extends Preference implements Comparabl
public SafetyEntryPreference(
Context context,
+ int taskId,
SafetyCenterEntry entry,
PositionInCardList position,
SafetyCenterViewModel viewModel) {
@@ -66,7 +70,12 @@ public final class SafetyEntryPreference extends Preference implements Comparabl
setOnPreferenceClickListener(
unused -> {
try {
- pendingIntent.send();
+ ActivityOptions options = ActivityOptions.makeBasic();
+ if (taskId != INVALID_TASK_ID) {
+ options.setLaunchTaskId(taskId);
+ }
+ entry.getPendingIntent()
+ .send(context, 0, null, null, null, null, options.toBundle());
mViewModel
.getInteractionLogger()
.recordForEntry(Action.ENTRY_CLICKED, mEntry);
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/StaticSafetyEntryPreference.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/StaticSafetyEntryPreference.java
index e71a17a3c..609407c6b 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/StaticSafetyEntryPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/StaticSafetyEntryPreference.java
@@ -18,6 +18,7 @@ package com.android.permissioncontroller.safetycenter.ui;
import static android.os.Build.VERSION_CODES.TIRAMISU;
+import android.app.ActivityOptions;
import android.content.Context;
import android.safetycenter.SafetyCenterStaticEntry;
import android.text.TextUtils;
@@ -39,7 +40,10 @@ public class StaticSafetyEntryPreference extends Preference implements Comparabl
private final SafetyCenterViewModel mViewModel;
public StaticSafetyEntryPreference(
- Context context, SafetyCenterStaticEntry entry, SafetyCenterViewModel viewModel) {
+ Context context,
+ int taskId,
+ SafetyCenterStaticEntry entry,
+ SafetyCenterViewModel viewModel) {
super(context);
mEntry = entry;
mViewModel = viewModel;
@@ -49,7 +53,10 @@ public class StaticSafetyEntryPreference extends Preference implements Comparabl
setOnPreferenceClickListener(
unused -> {
try {
- mEntry.getPendingIntent().send();
+ ActivityOptions options = ActivityOptions.makeBasic();
+ options.setLaunchTaskId(taskId);
+ mEntry.getPendingIntent()
+ .send(context, 0, null, null, null, null, options.toBundle());
} catch (Exception ex) {
Log.e(
TAG,
diff --git a/SafetyCenter/Resources/shared_res/values/config.xml b/SafetyCenter/Resources/shared_res/values/config.xml
new file mode 100644
index 000000000..f80acf41c
--- /dev/null
+++ b/SafetyCenter/Resources/shared_res/values/config.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2022 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.
+ -->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Comma separated list of safety source IDs to show in the same task as the safety center -->
+ <string name="config_same_task_safety_source_ids" translatable="false">AndroidLockScreen,AndroidBiometrics,AndroidPermissionUsage,AndroidPermissionManager,AndroidPrivacyControls,AndroidWorkPolicyInfo,AndroidAdvancedSecurity,AndroidAdvancedPrivacy</string>
+</resources> \ No newline at end of file
diff --git a/permissions/com.android.permissioncontroller.xml b/permissions/com.android.permissioncontroller.xml
index 453b47478..84fe69f11 100644
--- a/permissions/com.android.permissioncontroller.xml
+++ b/permissions/com.android.permissioncontroller.xml
@@ -32,5 +32,6 @@
<permission name="android.permission.READ_SAFETY_CENTER_STATUS" />
<permission name="android.permission.SEND_SAFETY_CENTER_UPDATE" />
<permission name="android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS" />
+ <permission name="android.permission.START_TASKS_FROM_RECENTS" />
</privapp-permissions>
</permissions>