diff options
Diffstat (limited to 'src/com/android/packageinstaller/permission/ui/auto')
3 files changed, 113 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoAppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AutoAppPermissionsFragment.java index 010fa7ad..aac7faf6 100644 --- a/src/com/android/packageinstaller/permission/ui/auto/AutoAppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/auto/AutoAppPermissionsFragment.java @@ -23,6 +23,7 @@ import android.content.pm.PackageInfo; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.UserHandle; +import android.text.TextUtils; import android.widget.Toast; import androidx.annotation.NonNull; @@ -35,6 +36,7 @@ import androidx.preference.PreferenceScreen; import com.android.packageinstaller.auto.AutoSettingsFrameFragment; import com.android.packageinstaller.permission.model.AppPermissionGroup; import com.android.packageinstaller.permission.model.AppPermissions; +import com.android.packageinstaller.permission.model.PermissionUsages; import com.android.packageinstaller.permission.ui.AppPermissionActivity; import com.android.packageinstaller.permission.utils.Utils; import com.android.permissioncontroller.R; @@ -245,6 +247,7 @@ public class AutoAppPermissionsFragment extends AutoSettingsFrameFragment { preference.setKey(group.getName()); preference.setTitle(group.getFullLabel()); preference.setIcon(Utils.applyTint(context, icon, android.R.attr.colorControlNormal)); + preference.setSummary(getPreferenceSummary(group)); preference.setOnPreferenceClickListener(pref -> { Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSION); intent.putExtra(Intent.EXTRA_PACKAGE_NAME, group.getApp().packageName); @@ -258,6 +261,37 @@ public class AutoAppPermissionsFragment extends AutoSettingsFrameFragment { return preference; } + private String getPreferenceSummary(AppPermissionGroup group) { + String groupSummary = getGroupSummary(group); + + if (Utils.isModernPermissionGroup(group.getName()) && Utils.shouldShowPermissionUsage( + group.getName())) { + String lastAccessStr = Utils.getAbsoluteLastUsageString(getContext(), + PermissionUsages.loadLastGroupUsage(getContext(), group)); + if (lastAccessStr != null) { + if (group.areRuntimePermissionsGranted()) { + return getContext().getString(R.string.app_permission_most_recent_summary, + lastAccessStr); + } else { + return getContext().getString( + R.string.app_permission_most_recent_denied_summary, lastAccessStr); + } + } else { + if (TextUtils.isEmpty(groupSummary) && Utils.isPermissionsHubEnabled()) { + if (group.areRuntimePermissionsGranted()) { + return getContext().getString( + R.string.app_permission_never_accessed_summary); + } else { + return getContext().getString( + R.string.app_permission_never_accessed_denied_summary); + } + } + } + } + + return groupSummary; + } + private String getGroupSummary(AppPermissionGroup group) { if (group.hasPermissionWithBackgroundMode() && group.areRuntimePermissionsGranted()) { AppPermissionGroup backgroundGroup = group.getBackgroundPermissions(); diff --git a/src/com/android/packageinstaller/permission/ui/auto/AutoPermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/auto/AutoPermissionAppsFragment.java index 9d310006..d4242385 100644 --- a/src/com/android/packageinstaller/permission/ui/auto/AutoPermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/auto/AutoPermissionAppsFragment.java @@ -33,6 +33,7 @@ import com.android.packageinstaller.auto.AutoSettingsFrameFragment; import com.android.packageinstaller.permission.model.AppPermissionGroup; import com.android.packageinstaller.permission.model.PermissionApps; import com.android.packageinstaller.permission.model.PermissionApps.Callback; +import com.android.packageinstaller.permission.model.PermissionUsages; import com.android.packageinstaller.permission.ui.handheld.PermissionAppsFragment; import com.android.packageinstaller.permission.ui.handheld.PermissionControlPreference; import com.android.packageinstaller.permission.utils.Utils; @@ -262,6 +263,10 @@ public class AutoPermissionAppsFragment extends AutoSettingsFrameFragment implem } if (existingPref != null) { + if (existingPref instanceof PermissionControlPreference) { + setPreferenceSummary(group, (PermissionControlPreference) existingPref, + category != denied, context); + } category.addPreference(existingPref); continue; } @@ -273,6 +278,7 @@ public class AutoPermissionAppsFragment extends AutoSettingsFrameFragment implem pref.setTitle(Utils.getFullAppLabel(app.getAppInfo(), context)); pref.setEllipsizeEnd(); pref.useSmallerIcon(); + setPreferenceSummary(group, pref, category != denied, context); category.addPreference(pref); } @@ -301,4 +307,32 @@ public class AutoPermissionAppsFragment extends AutoSettingsFrameFragment implem setShowSystemAppsToggle(); setLoading(false); } + + private void setPreferenceSummary(AppPermissionGroup group, PermissionControlPreference pref, + boolean allowed, Context context) { + if (!Utils.isModernPermissionGroup(group.getName())) { + return; + } + if (!Utils.shouldShowPermissionUsage(group.getName())) { + return; + } + String lastAccessStr = Utils.getAbsoluteLastUsageString(context, + PermissionUsages.loadLastGroupUsage(context, group)); + if (lastAccessStr != null) { + if (allowed) { + pref.setSummary(context.getString(R.string.app_permission_most_recent_summary, + lastAccessStr)); + } else { + pref.setSummary( + context.getString(R.string.app_permission_most_recent_denied_summary, + lastAccessStr)); + } + } else if (Utils.isPermissionsHubEnabled()) { + if (allowed) { + pref.setSummary(R.string.app_permission_never_accessed_summary); + } else { + pref.setSummary(R.string.app_permission_never_accessed_denied_summary); + } + } + } } diff --git a/src/com/android/packageinstaller/permission/ui/auto/ReviewOngoingUsageAutoFragment.java b/src/com/android/packageinstaller/permission/ui/auto/ReviewOngoingUsageAutoFragment.java new file mode 100644 index 00000000..beeed38b --- /dev/null +++ b/src/com/android/packageinstaller/permission/ui/auto/ReviewOngoingUsageAutoFragment.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2019 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.packageinstaller.permission.ui.auto; + +import android.app.AlertDialog; +import android.content.Intent; +import android.os.Bundle; + +import com.android.packageinstaller.permission.ui.handheld.ReviewOngoingUsageFragment; + +/** + * A dialog listing the currently uses of camera, microphone, and location. + */ +public class ReviewOngoingUsageAutoFragment extends ReviewOngoingUsageFragment { + + /** + * @return A new {@link ReviewOngoingUsageAutoFragment} + */ + public static ReviewOngoingUsageAutoFragment newInstance(long numMillis) { + ReviewOngoingUsageAutoFragment fragment = new ReviewOngoingUsageAutoFragment(); + Bundle arguments = new Bundle(); + arguments.putLong(Intent.EXTRA_DURATION_MILLIS, numMillis); + fragment.setArguments(arguments); + return fragment; + } + + @Override + protected void setNeutralButton(AlertDialog.Builder builder) { + // do nothing + } +} |